@wix/auto_sdk_gbp_locations 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.
- package/build/cjs/index.d.ts +913 -0
- package/build/cjs/index.js +3088 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/index.typings.d.ts +6699 -0
- package/build/cjs/index.typings.js +2726 -0
- package/build/cjs/index.typings.js.map +1 -0
- package/build/cjs/meta.d.ts +5220 -0
- package/build/cjs/meta.js +2274 -0
- package/build/cjs/meta.js.map +1 -0
- package/build/cjs/schemas.d.ts +11094 -0
- package/build/cjs/schemas.js +15256 -0
- package/build/cjs/schemas.js.map +1 -0
- package/build/es/index.d.mts +913 -0
- package/build/es/index.mjs +3002 -0
- package/build/es/index.mjs.map +1 -0
- package/build/es/index.typings.d.mts +6699 -0
- package/build/es/index.typings.mjs +2639 -0
- package/build/es/index.typings.mjs.map +1 -0
- package/build/es/meta.d.mts +5220 -0
- package/build/es/meta.mjs +2186 -0
- package/build/es/meta.mjs.map +1 -0
- package/build/es/package.json +3 -0
- package/build/es/schemas.d.mts +11094 -0
- package/build/es/schemas.mjs +15144 -0
- package/build/es/schemas.mjs.map +1 -0
- package/build/internal/cjs/index.d.ts +933 -0
- package/build/internal/cjs/index.js +3088 -0
- package/build/internal/cjs/index.js.map +1 -0
- package/build/internal/cjs/index.typings.d.ts +6724 -0
- package/build/internal/cjs/index.typings.js +2726 -0
- package/build/internal/cjs/index.typings.js.map +1 -0
- package/build/internal/cjs/meta.d.ts +5267 -0
- package/build/internal/cjs/meta.js +2274 -0
- package/build/internal/cjs/meta.js.map +1 -0
- package/build/internal/cjs/schemas.d.ts +11094 -0
- package/build/internal/cjs/schemas.js +15256 -0
- package/build/internal/cjs/schemas.js.map +1 -0
- package/build/internal/es/index.d.mts +933 -0
- package/build/internal/es/index.mjs +3002 -0
- package/build/internal/es/index.mjs.map +1 -0
- package/build/internal/es/index.typings.d.mts +6724 -0
- package/build/internal/es/index.typings.mjs +2639 -0
- package/build/internal/es/index.typings.mjs.map +1 -0
- package/build/internal/es/meta.d.mts +5267 -0
- package/build/internal/es/meta.mjs +2186 -0
- package/build/internal/es/meta.mjs.map +1 -0
- package/build/internal/es/schemas.d.mts +11094 -0
- package/build/internal/es/schemas.mjs +15144 -0
- package/build/internal/es/schemas.mjs.map +1 -0
- package/meta/package.json +3 -0
- package/package.json +61 -0
- package/schemas/package.json +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../index.ts","../../src/gbp-location-v1-gbplocation-locations.universal.ts","../../src/gbp-location-v1-gbplocation-locations.http.ts","../../src/gbp-location-v1-gbplocation-locations.public.ts","../../src/gbp-location-v1-gbplocation-locations.context.ts"],"sourcesContent":["export * from './src/gbp-location-v1-gbplocation-locations.context.js';\n","import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport { queryBuilder } from '@wix/sdk-runtime/query-builder';\nimport {\n renameKeysFromSDKRequestToRESTRequest,\n renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport {\n HttpClient,\n HttpResponse,\n NonNullablePaths,\n QuerySpec,\n Query as QuerySdkType,\n} from '@wix/sdk-types';\nimport * as ambassadorWixGbpLocationV1Gbplocation from './gbp-location-v1-gbplocation-locations.http.js';\n// @ts-ignore\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { createQueryUtils } from '@wix/sdk-runtime/query-builder-utils';\n\n/**\n * A GBP location is a site's stable record of one Google Business Profile\n * location.\n *\n * It holds the identifiers and operational metadata needed to work with that\n * location on Google's behalf. It doesn't store the Google-owned profile data\n * itself: name, address, opening hours, photos, reviews, attributes and insights\n * are all retrieved live from Google on each call, so they're never stale here\n * and never edited here.\n *\n * `id` is Google's own location identifier, so you can use it to correlate a\n * location with data you retrieve from Google directly.\n *\n * The only personal data on a GBP location is `serviceAreaPostalAddress`, which\n * is set for service-area businesses. It's often a home address, so it's stored\n * encrypted and is covered by the site's data-deletion requests.\n *\n * A Google account must be connected before locations can be imported, and before\n * any call that reads or writes a specific location's profile. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * Two methods work without a connection, because they read Google's public catalog\n * rather than a site's own profile: Search Google Locations, and List Attribute\n * Metadata when called with `categoryRegion`. Both are useful before a site owner\n * has connected anything.\n */\nexport interface GBPLocation {\n /**\n * Google's opaque location identifier on the public API.\n * @immutable\n * @minLength 1\n * @maxLength 255\n */\n _id?: string;\n /**\n * ID of the Google Business Profile account that holds this location, what\n * Google calls a location group.\n *\n * One site can have locations in more than one account, because a single\n * Google login can own several.\n * @immutable\n * @maxLength 255\n */\n accountId?: string;\n /**\n * Saved postal address for service-area businesses. Used as the `context`\n * parameter in Google's FetchVerificationOptions call for service-area\n * verification flows. Null for storefront businesses.\n */\n serviceAreaPostalAddress?: PostalAddress;\n /**\n * Date and time the location was imported into Wix.\n * @readonly\n */\n _createdDate?: Date | null;\n /**\n * Date and time the location was last updated.\n * @readonly\n */\n _updatedDate?: Date | null;\n /**\n * Revision number, incremented on every update. Used for optimistic locking.\n * @readonly\n */\n revision?: string;\n /**\n * Google's location identifier for this location, the same value as `id`.\n * Filter and sort on this field in Query GBP Locations.\n * @immutable\n * @maxLength 255\n * @readonly\n */\n googleLocationId?: string;\n /**\n * Identity this location is published under in Google partner feeds, used as\n * the entity ID, merchant ID or parent entity ID across Reserve with Google,\n * Order with Google and Dine with Google.\n *\n * Can be set once. A location that already has a value keeps it, and a request\n * that tries to change it is rejected: Google has already ingested the value as\n * the merchant's identity, so changing it withdraws the business from those\n * feeds and can remove its booking and ordering buttons. Setting it on a\n * location that doesn't have one yet is allowed.\n *\n * Locations created through this API are given a value automatically, so you\n * usually don't need to set it. Specify it only when migrating a location whose\n * identity Google already knows.\n * @maxLength 288\n */\n feedEntityId?: string | null;\n}\n\n/**\n * An address stored on a service-area GBP location and used to verify it with\n * Google.\n *\n * This isn't a copy of the address on the Google Business Profile. It's the\n * address Google needs as context when verifying a business that serves an area\n * rather than operating from a storefront.\n */\nexport interface PostalAddress {\n /**\n * ISO 3166-1 alpha-2 country code (e.g. \"US\", \"GB\").\n * @format COUNTRY\n */\n countryCode?: string;\n /**\n * Postal/ZIP code.\n * @maxLength 20\n */\n postalCode?: string;\n /**\n * Administrative area (state, province, region).\n * @maxLength 100\n */\n administrativeArea?: string;\n /**\n * City or locality.\n * @maxLength 100\n */\n locality?: string;\n /**\n * Street address lines. Up to 5 lines.\n * @maxSize 5\n * @maxLength 255\n */\n addressLines?: string[];\n}\n\nexport interface GetGBPLocationRequest {\n /**\n * ID of the location to retrieve. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface GetGBPLocationResponse {\n /** The retrieved location. */\n gbplocation?: GBPLocation;\n}\n\nexport interface QueryGBPLocationsRequest {\n /**\n * Query to filter, sort and page the results.\n *\n * Supported properties: `id`, `googleLocationId`, `accountId`.\n */\n query?: CursorQuery;\n}\n\nexport interface CursorQuery extends CursorQueryPagingMethodOneOf {\n /**\n * Cursor paging options.\n *\n * Learn more about [cursor paging](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#cursor-paging).\n */\n cursorPaging?: CursorPaging;\n /**\n * Filter object.\n *\n * Learn more about the [filter section](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#the-filter-section).\n */\n filter?: Record<string, any> | null;\n /**\n * Sort object.\n *\n * Learn more about the [sort section](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#the-sort-section).\n * @maxSize 5\n */\n sort?: Sorting[];\n}\n\n/** @oneof */\nexport interface CursorQueryPagingMethodOneOf {\n /**\n * Cursor paging options.\n *\n * Learn more about [cursor paging](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#cursor-paging).\n */\n cursorPaging?: CursorPaging;\n}\n\nexport interface Sorting {\n /**\n * Name of the field to sort by.\n * @maxLength 512\n */\n fieldName?: string;\n /** Sort order. */\n order?: SortOrderWithLiterals;\n}\n\nexport enum SortOrder {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n\n/** @enumType */\nexport type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC';\n\nexport interface CursorPaging {\n /**\n * Maximum number of items to return in the results.\n * @max 100\n */\n limit?: number | null;\n /**\n * Pointer to the next or previous page in the list of results.\n *\n * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n * Not relevant for the first request.\n * @maxLength 16000\n */\n cursor?: string | null;\n}\n\nexport interface QueryGBPLocationsResponse {\n /** List of GBPLocations matching the query. */\n locations?: GBPLocation[];\n /** Cursor paging metadata. */\n pagingMetadata?: CursorPagingMetadata;\n}\n\nexport interface CursorPagingMetadata {\n /** Number of items returned in current page. */\n count?: number | null;\n /** Cursor strings that point to the next page, previous page, or both. */\n cursors?: Cursors;\n /**\n * Whether there are more pages to retrieve following the current page.\n *\n * + `true`: Another page of results can be retrieved.\n * + `false`: This is the last page.\n */\n hasNext?: boolean | null;\n}\n\nexport interface Cursors {\n /**\n * Cursor string pointing to the next page in the list of results.\n * @maxLength 16000\n */\n next?: string | null;\n /**\n * Cursor pointing to the previous page in the list of results.\n * @maxLength 16000\n */\n prev?: string | null;\n}\n\nexport interface QueryGoogleLocationsRequest {\n /**\n * Query to filter, sort and page the results. Takes the same properties as\n * Query GBP Locations.\n *\n * Supported properties: `id`, `googleLocationId`, `accountId`.\n */\n query?: CursorQuery;\n}\n\nexport interface QueryGoogleLocationsResponse {\n /**\n * Retrieved locations, each with its Google data or, if that couldn't be\n * retrieved, a `googleError` explaining why.\n */\n locations?: LocationWithGoogle[];\n /**\n * Paging metadata. Paging reflects the site's stored locations, so a location\n * whose Google data couldn't be retrieved still occupies its place in the page.\n */\n pagingMetadata?: CursorPagingMetadata;\n}\n\n/**\n * A location together with the outcome of retrieving its Google data.\n *\n * Each location carries either `googleLocation` or `googleError`, and separately\n * either `voiceOfMerchant` or `voiceOfMerchantError`. The two are retrieved\n * independently, so one can succeed while the other fails.\n *\n * A failure on either doesn't fail the call. Check these fields per location rather\n * than relying on the response status.\n *\n * Failures use the same error codes as the methods that write to Google, so\n * existing handling can be reused:\n *\n * - `GOOGLE_API_CALL_FAILED`: Google returned an error, or the call didn't reach\n * it. `data.googleHttpStatus` carries Google's status, or `-1` if no response\n * arrived. On this path that's the only detail available: `googleResponseBody`\n * and `googleErrorMessage` aren't populated here, though they are when a write\n * method returns the same code. Check whether a field is present rather than\n * assuming it is.\n * - `GBP_TOKEN_UNAVAILABLE`: the site's Google credentials couldn't be used, so\n * Google wasn't called. This one is temporary - a Google or service outage, or\n * a connection that's missing the business-listings permission. Retry it. It\n * does not mean the site owner has to connect again.\n * - `GBP_TOKEN_REJECTED`: Google rejected the site's stored credentials, so\n * Google wasn't called. This is the only code here that means the site owner\n * has to connect their Google account again.\n * - `MIXED_CONNECTION_ID`: this location belongs to a different Google account\n * than the rest of the page, so it was skipped.\n */\nexport interface LocationWithGoogle\n extends LocationWithGoogleGoogleResultOneOf,\n LocationWithGoogleVoiceOfMerchantResultOneOf {\n /** The location's current profile data from Google. */\n googleLocation?: GoogleLocation;\n /**\n * Why the profile data couldn't be retrieved for this location. See the\n * description of this object for the error codes.\n */\n googleError?: ApplicationError;\n /** Whether Google considers this location's profile trusted and live. */\n voiceOfMerchant?: VoiceOfMerchantState;\n /**\n * Why the Voice of Merchant state couldn't be retrieved for this location.\n * Same error codes as `googleError`.\n */\n voiceOfMerchantError?: ApplicationError;\n /**\n * The location as it's stored for the site, including its `id` and\n * `accountId`.\n */\n location?: GBPLocation;\n}\n\n/** @oneof */\nexport interface LocationWithGoogleGoogleResultOneOf {\n /** The location's current profile data from Google. */\n googleLocation?: GoogleLocation;\n /**\n * Why the profile data couldn't be retrieved for this location. See the\n * description of this object for the error codes.\n */\n googleError?: ApplicationError;\n}\n\n/** @oneof */\nexport interface LocationWithGoogleVoiceOfMerchantResultOneOf {\n /** Whether Google considers this location's profile trusted and live. */\n voiceOfMerchant?: VoiceOfMerchantState;\n /**\n * Why the Voice of Merchant state couldn't be retrieved for this location.\n * Same error codes as `googleError`.\n */\n voiceOfMerchantError?: ApplicationError;\n}\n\n/**\n * The Google Business Profile data for a location.\n *\n * Mostly the details that appear on the public profile, with the exception of\n * `storeCode`, which is a free-form identifier only the site owner sees.\n *\n * This is Google-owned data. It's retrieved from Google when you read it and sent\n * to Google when you write it, so it's never cached for the site.\n *\n * `storefrontAddress` and `serviceArea` aren't mutually exclusive. At least one is\n * required when creating a location, and both can be set when\n * `serviceArea.businessType` is `CUSTOMER_AND_BUSINESS_LOCATION`, which is how a\n * business that both has premises and travels to customers is represented.\n */\nexport interface GoogleLocation {\n /**\n * Google resource name, e.g. \"locations/12345678901234567890\".\n * Empty on create request; populated on response.\n * @maxLength 200\n */\n name?: string;\n /**\n * Business name shown on the listing (Google's \"title\").\n * @minLength 1\n * @maxLength 300\n */\n title?: string;\n /**\n * BCP-47 language tag, e.g. \"en-US\". Required by Google, immutable.\n * @format LANGUAGE_TAG\n */\n languageCode?: string;\n /** Primary business category. Required by Google. */\n primaryCategory?: Category;\n /**\n * Additional categories. Google caps at 9.\n * @maxSize 9\n */\n additionalCategories?: Category[];\n /**\n * Optional. Google asks for a description for every category except lodging\n * but doesn't enforce it, so neither does this API. Both an absent profile and\n * one with an empty description are accepted.\n */\n profile?: Profile;\n /**\n * Storefront postal address. Required for a business that serves customers at\n * its premises, and allowed alongside `serviceArea` when that field's\n * `businessType` is `CUSTOMER_AND_BUSINESS_LOCATION`.\n */\n storefrontAddress?: PostalAddress;\n /**\n * Service-area definition (for businesses that serve customers at the\n * customer's location, exclusively or in addition to their storefront).\n */\n serviceArea?: ServiceArea;\n /**\n * Primary business phone.\n * @maxLength 50\n */\n primaryPhone?: string;\n /**\n * Additional phones. Google caps at 2.\n * @maxSize 2\n * @maxLength 50\n */\n additionalPhones?: string[];\n /**\n * Business website.\n *\n * Clear it by masking `websiteUri` on Update Google Location and sending\n * `null`. Sending an empty string is rejected.\n * @format WEB_URL\n * @maxLength 1000\n */\n websiteUri?: string | null;\n /**\n * Merchant-defined store code (free-form identifier shown only to the merchant).\n * @maxLength 64\n */\n storeCode?: string;\n /**\n * Regular weekly business hours.\n * @maxSize 14\n */\n regularHours?: BusinessHours[];\n /** Geographic coordinates of the storefront. */\n latLng?: LatLng;\n /** Open/closed state of the listing. */\n openInfo?: OpenInfo;\n /**\n * Read-only signals Google reports about the listing.\n *\n * Only populated on the read paths (Query Google Locations, Get Google\n * Location) and on the Update Google Location response. Search Google\n * Locations reads Google's catalog rather than the merchant's own listing,\n * so it leaves this unset — don't read a default there as a \"no\".\n * @readonly\n */\n metadata?: Metadata;\n}\n\n/** Google Business Profile category. */\nexport interface Category {\n /**\n * Google's category identifier, such as `categories/gcid:restaurant`.\n *\n * The `categories/` prefix is optional when you send it. A bare `gcid:...` is\n * accepted and prefixed for you.\n * @minLength 1\n * @maxLength 200\n */\n _id?: string;\n /**\n * Display name of the category. Returned by Google, and ignored if you send\n * it.\n * @maxLength 200\n * @readonly\n */\n displayName?: string;\n}\n\n/**\n * Business description shown on the public listing.\n *\n * Not to be confused with `storeCode`, which only the site owner sees.\n */\nexport interface Profile {\n /**\n * Description of the location in the site owner's own words. Optional, and an\n * empty value clears it on the listing. Google allows up to 750 characters.\n * @maxLength 750\n */\n description?: string;\n}\n\n/**\n * Service-area definition for businesses that serve customers at the\n * customer's location (CUSTOMER_LOCATION_ONLY) or at a mix of the\n * customer's location and the business storefront (CUSTOMER_AND_BUSINESS_LOCATION).\n */\nexport interface ServiceArea {\n /** Type of service-area business. */\n businessType?: BusinessTypeWithLiterals;\n /**\n * Places served. Google caps at 20.\n * @maxSize 20\n */\n places?: PlaceInfo[];\n /**\n * ISO 3166-1 alpha-2 country code. Required by Google for\n * CUSTOMER_LOCATION_ONLY businesses; ignored otherwise.\n * @format COUNTRY\n */\n regionCode?: string;\n}\n\nexport enum BusinessType {\n CUSTOMER_LOCATION_ONLY = 'CUSTOMER_LOCATION_ONLY',\n CUSTOMER_AND_BUSINESS_LOCATION = 'CUSTOMER_AND_BUSINESS_LOCATION',\n}\n\n/** @enumType */\nexport type BusinessTypeWithLiterals =\n | BusinessType\n | 'CUSTOMER_LOCATION_ONLY'\n | 'CUSTOMER_AND_BUSINESS_LOCATION';\n\n/**\n * Reference to a Place (city, region, or other geographic area) served\n * by a service-area business.\n */\nexport interface PlaceInfo {\n /**\n * Human-readable place name (e.g. \"Brooklyn, NY\").\n * @maxLength 200\n */\n placeName?: string;\n /**\n * Google Place ID (opaque).\n * @maxLength 200\n */\n placeId?: string;\n}\n\n/**\n * Weekly business-hours window. One BusinessHours per open/close span.\n * A business that's open Mon-Fri 9-5 has 5 BusinessHours entries.\n */\nexport interface BusinessHours {\n /** Day of the week when this open/close window starts. */\n openDay?: DayOfWeekWithLiterals;\n /** Wall-clock time the business opens on `openDay`. */\n openTime?: TimeOfDay;\n /** Day of the week when this open/close window ends. */\n closeDay?: DayOfWeekWithLiterals;\n /** Wall-clock time the business closes on `closeDay`. */\n closeTime?: TimeOfDay;\n}\n\n/** Day of the week. */\nexport enum DayOfWeek {\n MONDAY = 'MONDAY',\n TUESDAY = 'TUESDAY',\n WEDNESDAY = 'WEDNESDAY',\n THURSDAY = 'THURSDAY',\n FRIDAY = 'FRIDAY',\n SATURDAY = 'SATURDAY',\n SUNDAY = 'SUNDAY',\n}\n\n/** @enumType */\nexport type DayOfWeekWithLiterals =\n | DayOfWeek\n | 'MONDAY'\n | 'TUESDAY'\n | 'WEDNESDAY'\n | 'THURSDAY'\n | 'FRIDAY'\n | 'SATURDAY'\n | 'SUNDAY';\n\n/** Time of day in 24-hour wall-clock format. */\nexport interface TimeOfDay {\n /**\n * Hour of day, from 0 to 23.\n * @max 23\n */\n hours?: number;\n /**\n * Minute of the hour, from 0 to 59.\n * @max 59\n */\n minutes?: number;\n}\n\n/** Geographic coordinates. */\nexport interface LatLng {\n /** Latitude in degrees. Must be in [-90, 90]. */\n latitude?: number;\n /** Longitude in degrees. Must be in [-180, 180]. */\n longitude?: number;\n}\n\n/** Open/closed state of a Business Profile listing. */\nexport interface OpenInfo {\n /** Current listing status. */\n status?: StatusWithLiterals;\n /** Whether the listing can be reopened (only relevant for CLOSED_PERMANENTLY). */\n canReopen?: boolean;\n}\n\nexport enum Status {\n OPEN = 'OPEN',\n CLOSED_PERMANENTLY = 'CLOSED_PERMANENTLY',\n CLOSED_TEMPORARILY = 'CLOSED_TEMPORARILY',\n}\n\n/** @enumType */\nexport type StatusWithLiterals =\n | Status\n | 'OPEN'\n | 'CLOSED_PERMANENTLY'\n | 'CLOSED_TEMPORARILY';\n\n/**\n * Read-only signals Google reports about the listing itself, as opposed to\n * the profile content on it. Mirrors a subset of Google's\n * `Location.metadata`.\n */\nexport interface Metadata {\n /**\n * Whether this location can carry lodging (hotel) data — that is, whether\n * Get/Update Google Location Lodging are usable for it. Google derives it\n * from the primary category, so it flips when the category changes.\n */\n canOperateLodgingData?: boolean;\n}\n\nexport interface ApplicationError {\n /** Error code. */\n code?: string;\n /** Description of the error. */\n description?: string;\n /** Data related to the error. */\n data?: Record<string, any> | null;\n}\n\n/**\n * Whether Google considers a location's profile trusted and live, and if not, what\n * the site owner needs to do about it.\n *\n * Google calls this Voice of Merchant. A location can be verified and still not\n * have it, so this is the signal to check before telling a site owner their profile\n * is live. See\n * [Google's documentation](https://developers.google.com/my-business/reference/verifications/rest/v1/locations/getVoiceOfMerchantState).\n *\n * `state` says what's needed. Two states carry extra detail, and each detail field\n * is only meaningful for its own state: `recommendationReason` for\n * `COMPLY_WITH_GUIDELINES`, and `hasPendingVerification` for `VERIFY`.\n */\nexport interface VoiceOfMerchantState {\n /** Whether the location is ready to be acted on by the merchant. */\n hasVoiceOfMerchant?: boolean;\n /** Whether the merchant has business-authority (claim) for the location. */\n hasBusinessAuthority?: boolean;\n /**\n * The action (if any) Google recommends the merchant take to obtain or\n * restore voice-of-merchant. `STATE_NONE` means no action is required at\n * this time.\n */\n state?: StateWithLiterals;\n /**\n * Set when `state == COMPLY_WITH_GUIDELINES`: why Google is asking the\n * merchant to review the guidelines.\n */\n recommendationReason?: RecommendationReasonWithLiterals;\n /**\n * Set when `state == VERIFY`: true when a Verification resource is already\n * in flight for the location (StartVerification was already called and the\n * PIN is in transit).\n */\n hasPendingVerification?: boolean;\n}\n\n/** Mirrors the `state` union in Google's spec. */\nexport enum State {\n /** Google is still assessing the location. Nothing to do but wait. */\n WAIT_FOR_VOICE_OF_MERCHANT = 'WAIT_FOR_VOICE_OF_MERCHANT',\n /**\n * Someone else claims this location. The site owner has to resolve it with\n * Google directly.\n */\n RESOLVE_OWNERSHIP_CONFLICT = 'RESOLVE_OWNERSHIP_CONFLICT',\n /**\n * The location needs to comply with Google's guidelines. Check\n * `recommendationReason` for what Google flagged.\n */\n COMPLY_WITH_GUIDELINES = 'COMPLY_WITH_GUIDELINES',\n /**\n * The location needs to be verified. Check `hasPendingVerification` to see\n * whether one is already under way before starting another.\n */\n VERIFY = 'VERIFY',\n}\n\n/** @enumType */\nexport type StateWithLiterals =\n | State\n | 'WAIT_FOR_VOICE_OF_MERCHANT'\n | 'RESOLVE_OWNERSHIP_CONFLICT'\n | 'COMPLY_WITH_GUIDELINES'\n | 'VERIFY';\n\n/**\n * Reason behind a ComplyWithGuidelines recommendation. Mirrors Google's\n * enum values.\n */\nexport enum RecommendationReason {\n /** Listing has been suspended for guideline violations. */\n BUSINESS_LOCATION_SUSPENDED = 'BUSINESS_LOCATION_SUSPENDED',\n /** Listing has been disabled. */\n BUSINESS_LOCATION_DISABLED = 'BUSINESS_LOCATION_DISABLED',\n}\n\n/** @enumType */\nexport type RecommendationReasonWithLiterals =\n | RecommendationReason\n | 'BUSINESS_LOCATION_SUSPENDED'\n | 'BUSINESS_LOCATION_DISABLED';\n\nexport interface GetGoogleLocationRequest {\n /**\n * ID of the location to retrieve. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface GetGoogleLocationResponse {\n /**\n * The location, with its Google profile data or the reason that couldn't be\n * retrieved.\n */\n location?: LocationWithGoogle;\n}\n\nexport interface CreateLocationRequest {\n /**\n * The location to record for this site.\n *\n * `id` is required and must be Google's location ID. `accountId` is required\n * too, because it identifies which Google account holds the listing.\n */\n location: GBPLocation;\n}\n\nexport interface CreateLocationResponse {\n /** The created location. */\n location?: GBPLocation;\n}\n\nexport interface UpdateLocationRequest {\n /** The location to update. Can be partial. */\n location: GBPLocation;\n /**\n * The fields to update. Anything not listed is left alone.\n * @internal\n */\n fieldMask?: string[];\n}\n\nexport interface UpdateLocationResponse {\n /** The updated location. */\n location?: GBPLocation;\n}\n\nexport interface DeleteLocationRequest {\n /**\n * ID of the location to delete. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface DeleteLocationResponse {}\n\nexport interface CreateGoogleLocationRequest {\n /**\n * GBP account id (numeric, no \"accounts/\" prefix). The server forms the\n * Google resource name as \"accounts/{account_id}\".\n * @minLength 1\n * @maxLength 255\n */\n accountId: string;\n /**\n * The Google Location to create. The `name` field is ignored on input\n * and populated by Google on response.\n */\n location: GoogleLocation;\n /**\n * Dry run. When true the payload is sent to Google's\n * accounts.locations.create with its `validateOnly` query param set, so\n * Google runs its full validation (categories, address, phone, hours,\n * pin-drop requirements) and creates nothing.\n *\n * A dry run reports failures exactly as a real create does — the same\n * GOOGLE_LOCATION_VALIDATION_FAILED reasons, the same INVALID_LOCATION_PAYLOAD\n * for the storefront_address / service_area combinations this service checks\n * itself — which is the point: a caller can pre-flight a form before\n * committing.\n *\n * On success nothing is created at Google, nothing is persisted here, no\n * GBPLocation.CREATED event is emitted, and the response's `location` is\n * UNSET (Google returns no resource name for a validate-only call). Callers\n * must treat an absent `location` as \"validation passed\", not as a failure.\n */\n validateOnly?: boolean;\n}\n\nexport interface CreateGoogleLocationResponse {\n /**\n * The created location, with `id` set to the ID Google assigned and `accountId`\n * carried through from the request.\n *\n * UNSET when the request had `validate_only` set: Google validated the payload\n * and created nothing, so there is no location to return.\n */\n location?: GBPLocation;\n}\n\n/**\n * Details for `GOOGLE_API_CALL_FAILED`.\n *\n * How much of it is filled in depends on what the method does:\n *\n * - A method that writes to Google, such as Create Google Location or Delete\n * Google Location, sets all three fields. You're fixing a request you wrote,\n * and when Google rejects it without giving reasons, its raw response is the\n * only thing to go on.\n * - A method that reads sets `googleHttpStatus` only. That covers `googleError`\n * and `voiceOfMerchantError` on Query Google Locations and Get Google\n * Location, and whole-call failures on the other reads such as List Reviews,\n * Search Google Locations and Get Voice Of Merchant. Reads serve data you\n * didn't author, so Google's own text is kept server-side (visibility\n * events) rather than forwarded.\n * Always test presence on the two string fields before reading them.\n */\nexport interface GoogleApiCallFailedError {\n /**\n * The HTTP status Google returned. -1 represents transport/parse failures\n * before a valid upstream HTTP response was available. Always set.\n */\n googleHttpStatus?: number;\n /**\n * Response body Google returned, if any.\n *\n * Set only by methods that write to Google. A method that reads is never\n * populated here, whether the failure is on the call as a whole or on a single\n * location, so check whether the field is present rather than assuming it is.\n * @maxLength 10000\n */\n googleResponseBody?: string;\n /**\n * What went wrong while calling Google. Set only by methods that write to\n * Google.\n * @maxLength 1000\n */\n googleErrorMessage?: string;\n}\n\n/**\n * Details for `GOOGLE_LOCATION_VALIDATION_FAILED`, returned when Google rejects\n * the location data and says why, with reasons such as `INVALID_PHONE_NUMBER`,\n * `PIN_DROP_REQUIRED` or `INVALID_ADDRESS`.\n *\n * Unlike `GOOGLE_API_CALL_FAILED`, this one is fixable from the response:\n * correct the fields it names and try again.\n */\nexport interface GoogleLocationValidationError {\n /**\n * The distinct ErrorInfo `reason` tokens Google returned in the 400 body's\n * details[]. Raw Google tokens (SCREAMING_SNAKE_CASE), de-duplicated and\n * order-preserved.\n * @maxSize 50\n * @maxLength 200\n */\n reasons?: string[];\n /**\n * Per-field detail behind `reasons`, when Google named the fields. Empty when\n * Google gave reasons without naming fields.\n *\n * `reasons` is always the authoritative list. This adds detail to it.\n * @maxSize 50\n */\n violations?: FieldViolation[];\n /**\n * The raw 400 body Google returned, verbatim. Carried so a reason we do not\n * yet decompose into `violations` is still diagnosable from the error alone\n * (the body names the field even when our parser cannot locate it).\n * @maxLength 10000\n */\n googleResponseBody?: string;\n}\n\n/**\n * A location field Google objected to, with what it said about that field.\n *\n * Exactly one of `reason` and `description` is set, depending on which form\n * Google reported. Branch on whichever is non-empty.\n */\nexport interface FieldViolation {\n /**\n * The field Google objected to, named as Google names it, such as\n * `storefrontAddress.regionCode` or `categories.primaryCategory`.\n *\n * Never empty. A reason Google reported without naming a field appears in\n * `reasons` instead, with no violation here.\n * @maxLength 500\n */\n field?: string;\n /**\n * The reason token this violation belongs to, such as\n * `REQUIRED_FIELD_MISSING_VALUE`. Stable enough to match on, and it also\n * appears in `reasons`. Empty when Google reported prose instead, in which\n * case read `description`.\n * @maxLength 1000\n */\n reason?: string;\n /**\n * Google's free-text explanation, such as \"Primary category is required.\"\n *\n * Prose meant for a human, not a stable contract, so show it rather than\n * matching on it. Empty when Google reported a token instead, in which case\n * read `reason`.\n * @maxLength 1000\n */\n description?: string;\n}\n\n/**\n * Error payload for LOCATION_DB_PERSIST_FAILED. Carries the Google-assigned\n * location id so the caller can reconcile the orphaned listing (e.g. via\n * CreateLocation directly with this id, or via a manual repair flow).\n */\nexport interface LocationDbPersistFailedError {\n /**\n * Location ID (Google's opaque location id, without \"locations/\" prefix).\n * @maxLength 255\n */\n locationId?: string;\n /**\n * The GBP account id the location was created under.\n * @maxLength 255\n */\n accountId?: string;\n}\n\nexport interface DeleteGoogleLocationRequest {\n /**\n * ID of the location to delete. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface DeleteGoogleLocationResponse {}\n\n/**\n * Details for `LOCATION_NOT_DELETABLE_VIA_API`, returned when Google won't allow a\n * listing to be deleted through its API. This usually means the listing is verified\n * or claimed, is managed as part of a chain, is suspended, or the connected account\n * doesn't have a role that permits deleting it.\n *\n * The location is left in place. The site owner has to remove the listing at\n * business.google.com, after which Delete Location removes it from the site.\n */\nexport interface LocationNotDeletableViaApiError {\n /**\n * Location ID (Google's opaque location id, without \"locations/\" prefix).\n * @maxLength 255\n */\n locationId?: string;\n}\n\nexport interface UpdateGoogleLocationRequest {\n /**\n * ID of the location to update. This is Google's location identifier, without\n * the `locations/` prefix.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * The profile values to set. Only the fields named in `fieldMask` are sent to\n * Google, so this can be partial.\n */\n location: GoogleLocation;\n /**\n * The fields to update. Required: there's no inference, so send it explicitly.\n *\n * Only these top-level paths are accepted: `title`, `storeCode`,\n * `primaryPhone`, `additionalPhones`, `primaryCategory`,\n * `additionalCategories`, `storefrontAddress`, `websiteUri`, `regularHours`,\n * `serviceArea`, `latLng`, `openInfo`, `profile`.\n *\n * Paths are checked as sent. An unknown path, a nested one, the wrong case, or\n * an empty mask is rejected as\n * INVALID_UPDATE_MASK before any Google call.\n *\n * Categories replace as a whole. Mask `primaryCategory` and\n * `additionalCategories` together, because a mask naming only one is rejected\n * with `INVALID_UPDATE_MASK`, and send the complete set you want, including a\n * valid `primaryCategory` or the call fails with `INVALID_CATEGORIES`. Google\n * replaces the whole set, so any additional category you want to keep has to be\n * resent or it's deleted.\n *\n * Phone numbers replace as a whole too. Mask `primaryPhone` and\n * `additionalPhones` together, and send the complete set you want. Any\n * additional phone you want to keep has to be resent or it's deleted. Unlike\n * categories, no primary is required, so masking both with none set clears\n * every phone number.\n *\n * Only top-level fields are valid. A nested path such as `serviceArea.places`\n * or `profile.description` is rejected with `INVALID_UPDATE_MASK`. Send the\n * top-level field instead, and Google replaces that whole part of the\n * profile.\n */\n fieldMask: string[];\n}\n\nexport interface UpdateGoogleLocationResponse {\n /**\n * The location's full profile as Google now holds it, not just the fields you\n * changed.\n */\n location?: GoogleLocation;\n}\n\n/**\n * Error payload for INVALID_UPDATE_MASK. Returned when field_mask contains\n * paths that are not patchable via UpdateGoogleLocation. The caller can\n * resubmit with only the allowed paths listed in the RPC docs.\n */\nexport interface InvalidUpdateMaskError {\n /**\n * The `fieldMask` paths that can't be updated by this method. Resubmit with\n * only the paths the method documents.\n * @maxSize 50\n * @maxLength 200\n */\n unknownPaths?: string[];\n}\n\nexport interface BulkCreateLocationsRequest {\n /**\n * The locations to record for this site. Set `id` and `accountId` on each.\n * @minSize 1\n * @maxSize 100\n */\n locations: GBPLocation[];\n /**\n * Whether to return each created location in `results.item`. Defaults to\n * `false`, which keeps the response small for a large batch.\n */\n returnEntity?: boolean;\n}\n\nexport interface BulkCreateLocationsResponse {\n /**\n * Results in the order the locations were sent. Each carries its own\n * `itemMetadata.originalIndex`.\n * @minSize 1\n * @maxSize 100\n */\n results?: BulkCreateLocationResult[];\n /** How many locations succeeded and failed. */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface ItemMetadata {\n /**\n * Item ID. Provided only whenever possible. For example, `itemId` can't be provided when item creation has failed.\n * @format GUID\n */\n _id?: string | null;\n /** Index of the item within the request array. Allows for correlation between request and response items. */\n originalIndex?: number;\n /** Whether the requested action for this item was successful. When `false`, the `error` field is returned. */\n success?: boolean;\n /** Details about the error in case of failure. */\n error?: ApplicationError;\n}\n\nexport interface BulkCreateLocationResult {\n /** Whether this location was created, and why not if it wasn't. */\n itemMetadata?: ItemMetadata;\n /** The created location. Returned only when `returnEntity` is `true`. */\n item?: GBPLocation;\n}\n\nexport interface BulkActionMetadata {\n /** Number of items that were successfully processed. */\n totalSuccesses?: number;\n /** Number of items that couldn't be processed. */\n totalFailures?: number;\n /** Number of failures without details because detailed failure threshold was exceeded. */\n undetailedFailures?: number;\n}\n\nexport interface BulkDeleteLocationsRequest {\n /**\n * IDs of the locations to delete. These are Google's location identifiers.\n * @minSize 1\n * @maxSize 100\n * @maxLength 255\n */\n locationIds: string[];\n}\n\nexport interface BulkDeleteLocationsResponse {\n /**\n * Per-item results.\n * @minSize 1\n * @maxSize 100\n */\n results?: BulkDeleteLocationResult[];\n /** Overall bulk operation metadata. */\n bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkDeleteLocationResult {\n /** Metadata for this individual delete operation. */\n itemMetadata?: ItemMetadata;\n}\n\nexport interface ListGbpAccountsRequest {\n /**\n * Cursor-based paging. Unset `limit` uses a server default of 20; `cursor`\n * is the `next`/`prev` token returned by a previous response.\n */\n paging?: CursorPaging;\n}\n\nexport interface ListGbpAccountsResponse {\n /** GBP accounts accessible to the connected Gmail for this Wix site. */\n accounts?: GbpAccount[];\n /**\n * Paging metadata. `cursors.next` is the token to specify for the next page, and\n * `hasNext` says whether there is one.\n */\n pagingMetadata?: CursorPagingMetadata;\n}\n\nexport interface GbpAccount {\n /**\n * Google GBP Account ID.\n * @maxLength 255\n */\n accountId?: string;\n /**\n * Display name of the GBP Account.\n * @maxLength 255\n */\n displayName?: string;\n /**\n * Type of the GBP Account (e.g. PERSONAL, LOCATION_GROUP, ORGANIZATION).\n * @maxLength 64\n */\n accountType?: string;\n}\n\nexport interface ListUnimportedLocationsRequest {\n /**\n * GBP Account ID to list locations for.\n * @maxLength 255\n */\n accountId: string;\n /**\n * Cursor-based paging. Unset `limit` uses a server default of 100; `cursor`\n * is the `next` token returned by a previous response (opaque Google token).\n */\n paging?: CursorPaging;\n}\n\nexport interface ListUnimportedLocationsResponse {\n /**\n * Paging metadata. `cursors.next` is the token to specify for the next page, and\n * `hasNext` says whether there is one.\n */\n pagingMetadata?: CursorPagingMetadata;\n /**\n * Locations from THIS page that are not yet imported into this Wix site under\n * the given account. Order preserved from Google.\n * @maxSize 100\n */\n locations?: UnimportedLocation[];\n}\n\n/**\n * A Google Business Profile location on the current page that has not yet been\n * imported into this Wix site. Carries only the few fields the import picker\n * needs to render a choice; full details are fetched on import.\n */\nexport interface UnimportedLocation {\n /**\n * Google location ID (no `locations/` prefix).\n * @maxLength 255\n */\n googleLocationId?: string;\n /**\n * Business name shown on the Google listing (Google's `title`).\n * @maxLength 300\n */\n title?: string;\n /** Storefront postal address; absent for service-area-only businesses. */\n storefrontAddress?: PostalAddress;\n /**\n * Places served by a service-area business. Absent for a business that only\n * has premises.\n *\n * When `businessType` is `CUSTOMER_AND_BUSINESS_LOCATION`, both this and\n * `storefrontAddress` are set.\n */\n serviceArea?: ServiceArea;\n}\n\nexport interface ListReviewsRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /** Sort order for reviews. */\n orderBy?: ReviewSortOrderWithLiterals;\n /**\n * Cursor-based paging. Unset `limit` uses a server default of 20; `cursor`\n * is the `next` token returned by a previous response (opaque Google token).\n * Google caps `limit` at 50.\n */\n paging?: CursorPaging;\n}\n\n/** Sort order for listing reviews. */\nexport enum ReviewSortOrder {\n NEWEST = 'NEWEST',\n HIGHEST_RATING = 'HIGHEST_RATING',\n LOWEST_RATING = 'LOWEST_RATING',\n}\n\n/** @enumType */\nexport type ReviewSortOrderWithLiterals =\n | ReviewSortOrder\n | 'NEWEST'\n | 'HIGHEST_RATING'\n | 'LOWEST_RATING';\n\nexport interface ListReviewsResponse {\n /** Reviews for the location. */\n reviews?: Review[];\n /**\n * Paging metadata. `cursors.next` is the token to specify for the next page, and\n * `hasNext` says whether there is one.\n */\n pagingMetadata?: CursorPagingMetadata;\n /** Aggregate review metrics for the location. */\n metrics?: ReviewMetrics;\n}\n\nexport interface Review {\n /**\n * Google's opaque review ID.\n * @maxLength 255\n */\n reviewId?: string;\n /**\n * Star rating, from 1 to 5.\n * @min 1\n * @max 5\n */\n starRating?: number;\n /**\n * Review comment text.\n * @maxLength 4096\n */\n comment?: string;\n /**\n * ISO 8601 timestamp of when the review was written.\n * @maxLength 64\n */\n createTime?: string;\n /**\n * Reviewer's display name.\n * @maxLength 255\n */\n reviewerDisplayName?: string;\n /** Whether the reviewer chose to remain anonymous. */\n anonymousReviewer?: boolean;\n /** The merchant's current reply to this review, if any. */\n reply?: ReviewReply;\n}\n\nexport interface ReviewReply {\n /**\n * The reply text.\n * @maxLength 4096\n */\n text?: string;\n /**\n * ISO 8601 timestamp of when the reply was last updated.\n * @maxLength 64\n */\n updateTime?: string;\n}\n\nexport interface ReviewMetrics {\n /** Average star rating, from 1.0 to 5.0, across every review on the profile. */\n averageRating?: number;\n /** Total number of reviews. */\n totalReviewCount?: number;\n}\n\nexport interface PutReviewReplyRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Google's opaque review ID.\n * @maxLength 255\n */\n reviewId: string;\n /**\n * Reply text to post or replace.\n * @minLength 1\n * @maxLength 4096\n */\n text: string;\n}\n\nexport interface PutReviewReplyResponse {\n /** The created or updated review reply. */\n reply?: ReviewReply;\n}\n\nexport interface DeleteReviewReplyRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Google's opaque review ID.\n * @maxLength 255\n */\n reviewId: string;\n}\n\nexport interface DeleteReviewReplyResponse {}\n\nexport interface ListMediaRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Cursor-based paging. `limit` maps to Google's page size (unset uses a server\n * default of 100, max 100); `cursor` is the `next` token returned by a previous\n * response (an opaque Google page token).\n */\n paging?: CursorPaging;\n}\n\nexport interface ListMediaResponse {\n /** Media items for this page of the location's media. */\n mediaItems?: MediaItem[];\n /**\n * Paging metadata. `cursors.next` is the token to specify for the next page, and\n * `hasNext` says whether there is one.\n */\n pagingMetadata?: CursorPagingMetadata;\n}\n\nexport interface MediaItem {\n /**\n * Google's opaque media key (used to reference/delete media).\n * @maxLength 255\n */\n mediaKey?: string;\n /** Whether this item is a photo or a video. */\n format?: MediaFormatWithLiterals;\n /**\n * Google-hosted URL the media is served at.\n *\n * Not stable: it can change over time, so use `mediaKey` as the durable\n * identifier rather than this. For a video, this is a preview image rather\n * than the stream.\n * @format WEB_URL\n * @maxLength 2048\n */\n googleUrl?: string;\n /** Category of the media (e.g. EXTERIOR, INTERIOR, LOGO). */\n category?: MediaCategoryWithLiterals;\n /**\n * Google-hosted thumbnail URL. Like `googleUrl`, this can change over time.\n * @format WEB_URL\n * @maxLength 2048\n */\n thumbnailUrl?: string;\n /**\n * Caption or description of the media item.\n * @maxLength 5000\n */\n description?: string;\n /**\n * The URL the image was originally fetched from, echoing the `sourceUrl` it\n * was created with. Present on media the site owner posted, and absent on\n * media contributed by customers.\n * @format WEB_URL\n * @maxLength 2048\n */\n sourceUrl?: string;\n /**\n * Attribution of the contributor, for customer-contributed media. Empty for\n * merchant-posted media (e.g. items added via CreateMedia).\n */\n attribution?: MediaItemAttribution;\n}\n\n/** Format of a media item. Mirrors Google's mybusiness v4 MediaFormat. */\nexport enum MediaFormat {\n PHOTO = 'PHOTO',\n VIDEO = 'VIDEO',\n}\n\n/** @enumType */\nexport type MediaFormatWithLiterals = MediaFormat | 'PHOTO' | 'VIDEO';\n\n/**\n * Where a media item is shown on the listing. Mirrors Google's mybusiness v4\n * LocationAssociation.Category.\n */\nexport enum MediaCategory {\n /** The banner image at the top of the profile. One per location. */\n COVER = 'COVER',\n /** The profile image shown alongside the business name. */\n PROFILE = 'PROFILE',\n /** The business's logo. One per location. */\n LOGO = 'LOGO',\n /** The outside of the premises, including the storefront. */\n EXTERIOR = 'EXTERIOR',\n /** The inside of the premises. */\n INTERIOR = 'INTERIOR',\n /** A product the business sells. */\n PRODUCT = 'PRODUCT',\n /** The team at work, such as staff serving customers. */\n AT_WORK = 'AT_WORK',\n /** Food or drink the business serves. */\n FOOD_AND_DRINK = 'FOOD_AND_DRINK',\n /** The menu, for a business that serves food or drink. */\n MENU = 'MENU',\n /** A shared space, such as a lobby or a waiting area. */\n COMMON_AREA = 'COMMON_AREA',\n /** Guest rooms, for accommodation businesses. */\n ROOMS = 'ROOMS',\n /** The people who work at the business. */\n TEAMS = 'TEAMS',\n /**\n * Anything that doesn't fit the other categories. This is the default for a\n * gallery photo.\n */\n ADDITIONAL = 'ADDITIONAL',\n}\n\n/** @enumType */\nexport type MediaCategoryWithLiterals =\n | MediaCategory\n | 'COVER'\n | 'PROFILE'\n | 'LOGO'\n | 'EXTERIOR'\n | 'INTERIOR'\n | 'PRODUCT'\n | 'AT_WORK'\n | 'FOOD_AND_DRINK'\n | 'MENU'\n | 'COMMON_AREA'\n | 'ROOMS'\n | 'TEAMS'\n | 'ADDITIONAL';\n\n/**\n * Attribution for customer-contributed media (Google's v4\n * MediaItem.Attribution). All fields are Google-populated, read-only.\n */\nexport interface MediaItemAttribution {\n /**\n * Display name of the contributor.\n * @maxLength 255\n */\n profileName?: string;\n /**\n * URL of the contributor's profile photo.\n * @format WEB_URL\n * @maxLength 2048\n */\n profilePhotoUrl?: string;\n /**\n * URL to report the media or request its takedown.\n * @format WEB_URL\n * @maxLength 2048\n */\n takedownUrl?: string;\n /**\n * URL of the contributor's profile.\n * @format WEB_URL\n * @maxLength 2048\n */\n profileUrl?: string;\n}\n\nexport interface CreateMediaRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Publicly accessible URL of the media file to add. Google fetches the bytes\n * from this URL server-side, so it must be reachable without auth.\n * @format WEB_URL\n * @maxLength 2048\n */\n sourceUrl: string;\n /** Where the media is shown on the listing (e.g. EXTERIOR, INTERIOR, LOGO). */\n category: MediaCategoryWithLiterals;\n /** PHOTO or VIDEO. */\n format: MediaFormatWithLiterals;\n}\n\nexport interface CreateMediaResponse {\n /** The created media item. */\n mediaItem?: MediaItem;\n}\n\nexport interface DeleteMediaRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Google's opaque media key.\n * @maxLength 255\n */\n mediaKey: string;\n}\n\nexport interface DeleteMediaResponse {}\n\nexport interface UpdateLocationFoodMenusRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * IDs of the Wix menus to publish to Google.\n *\n * This is the complete set: any menu you don't include is removed from\n * Google. An empty list\n * clears all menus on the location.\n *\n * Up to 20 menus.\n * @maxSize 20\n * @format GUID\n */\n menuIds?: string[];\n}\n\nexport interface UpdateLocationFoodMenusResponse {}\n\nexport interface UpdateLocationAttributesRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * The attributes to set or delete, keyed by `attributeId`.\n *\n * Only the attributes you name are touched. Every other attribute on the\n * listing is left alone. An entry with a `valueJson` sets that attribute, and\n * an entry with an empty `valueJson` deletes it.\n * @minSize 1\n * @maxSize 50\n */\n attributes: LocationAttribute[];\n}\n\nexport interface LocationAttribute {\n /**\n * Attribute key without the \"attributes/\" prefix (e.g. \"has_wifi\",\n * \"accepts_credit_cards\"). The prefix Google requires on the wire is applied\n * for you.\n * @maxLength 255\n */\n attributeId?: string;\n /**\n * The attribute's value, as the JSON object Google expects, for example\n * `{\"valueType\":\"BOOL\",\"values\":[true]}` or\n * `{\"valueType\":\"URL\",\"uriValues\":[{\"uri\":\"https://...\"}]}`.\n *\n * Passed through as-is, so its shape has to match what the attribute accepts.\n * Call List Attribute Metadata to find out what that is.\n *\n * On Update Location Attributes, leaving this empty deletes the attribute from\n * the location. On a response, and on Get Location Attributes, it's always\n * set.\n * @maxLength 4096\n */\n valueJson?: string;\n}\n\nexport interface UpdateLocationAttributesResponse {\n /** Full updated list of attributes for the location. */\n attributes?: LocationAttribute[];\n}\n\n/**\n * Details for `INVALID_VALUE_JSON`, returned when one or more attributes you sent\n * to Update Location Attributes carry a `valueJson` that Google's attribute format\n * doesn't accept. The expected shape is like\n * `{\"valueType\":\"BOOL\",\"values\":[true]}`.\n *\n * Every rejected attribute is reported at once, so you can fix them in one go.\n */\nexport interface InvalidValueJsonError {\n /**\n * One entry per rejected attribute, in request order.\n * @maxSize 50\n */\n violations?: Violation[];\n}\n\nexport interface Violation {\n /** Zero-based index of the rejected attribute in the `attributes` you sent. */\n index?: number;\n /**\n * The `attributeId` of the rejected attribute, echoed back so you can match\n * this violation to what you sent.\n * @maxLength 255\n */\n attributeId?: string;\n /**\n * Human-readable reason from the JSON parser.\n * @maxLength 1000\n */\n reason?: string;\n}\n\nexport interface GetLocationAttributesRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface GetLocationAttributesResponse {\n /** Attribute values currently set on the location. */\n attributes?: LocationAttribute[];\n}\n\nexport interface GetLocationLodgingRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface GetLocationLodgingResponse {\n /**\n * The location's hotel data. Fields the property has no answer on record for\n * are left unset.\n */\n lodging?: Lodging;\n}\n\n/** Lodging of a location that provides accomodations. */\nexport interface Lodging {\n /**\n * Physical adaptations made to the property in consideration of varying levels of human physical\n * ability.\n */\n accessibility?: Accessibility;\n /** Amenities and features related to leisure and play. */\n activities?: Activities;\n /**\n * Output only. All units on the property have at least these attributes.\n * @readonly\n */\n allUnits?: GuestUnitFeatures;\n /** Features of the property of specific interest to the business traveler. */\n business?: Business;\n /** Features of the shared living areas available in this Lodging. */\n commonLivingArea?: LivingArea;\n /** The ways in which the property provides guests with the ability to access the internet. */\n connectivity?: Connectivity;\n /** Services and amenities for families and young guests. */\n families?: Families;\n /** Meals, snacks, and beverages available at the property. */\n foodAndDrink?: FoodAndDrink;\n /**\n * Individual GuestUnitTypes that are available in this Lodging.\n * @maxSize 100\n */\n guestUnits?: GuestUnitType[];\n /** Health and safety measures implemented by the hotel during COVID-19. */\n healthAndSafety?: HealthAndSafety;\n /** Conveniences provided in guest units to facilitate an easier, more comfortable stay. */\n housekeeping?: Housekeeping;\n /**\n * Required. Metadata for the lodging.\n * @readonly\n */\n metadata?: LodgingMetadata;\n /** Parking options at the property. */\n parking?: Parking;\n /** Policies regarding guest-owned animals. */\n pets?: Pets;\n /** Property rules that impact guests. */\n policies?: Policies;\n /** Swimming pool or recreational water facilities available at the hotel. */\n pools?: Pools;\n /** General factual information about the property's physical structure and important dates. */\n property?: Property;\n /** Conveniences or help provided by the property to facilitate an easier, more comfortable stay. */\n services?: Services;\n /**\n * Output only. Some units on the property have as much as these attributes.\n * @readonly\n */\n someUnits?: GuestUnitFeatures;\n /** Sustainability practices implemented at the hotel. */\n sustainability?: Sustainability;\n /** Vehicles or vehicular services facilitated or owned by the property. */\n transportation?: Transportation;\n /** Guest facilities at the property to promote or maintain health, beauty, and fitness. */\n wellness?: Wellness;\n}\n\nexport enum AmenityException {\n /** Amenity or service is unavailable due to ongoing work orders. */\n UNDER_CONSTRUCTION = 'UNDER_CONSTRUCTION',\n /** Amenity or service availability is seasonal. */\n DEPENDENT_ON_SEASON = 'DEPENDENT_ON_SEASON',\n /** Amenity or service availability depends on the day of the week. */\n DEPENDENT_ON_DAY_OF_WEEK = 'DEPENDENT_ON_DAY_OF_WEEK',\n}\n\n/** @enumType */\nexport type AmenityExceptionWithLiterals =\n | AmenityException\n | 'UNDER_CONSTRUCTION'\n | 'DEPENDENT_ON_SEASON'\n | 'DEPENDENT_ON_DAY_OF_WEEK';\n\nexport enum EcoCertificate {\n /** ISO14001. */\n ISO14001 = 'ISO14001',\n /** ISO50001. */\n ISO50001 = 'ISO50001',\n /** Asian Ecotourism Standard for Accommodations (AESA). */\n ASIAN_ECOTOURISM = 'ASIAN_ECOTOURISM',\n /** Biosphere Responsible Tourism Standard. */\n BIOSPHERE_RESPOSNIBLE_TOURISM = 'BIOSPHERE_RESPOSNIBLE_TOURISM',\n /** Bureau Veritas. */\n BUREAU_VERITAS = 'BUREAU_VERITAS',\n /** Control Union. */\n CONTROL_UNION = 'CONTROL_UNION',\n /** EarthCheck. */\n EARTHCHECK = 'EARTHCHECK',\n /** Eco-Certification Malta Standard. */\n ECO_CERTIFICATION_MALTA = 'ECO_CERTIFICATION_MALTA',\n /** Ecotourism Australia's ECO Certification Standard. */\n ECOTOURISM_AUSTRALIAS_ECO = 'ECOTOURISM_AUSTRALIAS_ECO',\n /** GREAT Green Deal Certification. */\n GREAT_GREEN_DEAL = 'GREAT_GREEN_DEAL',\n /** Green Globe. */\n GREEN_GLOBE = 'GREEN_GLOBE',\n /** Green Growth 2050 Standard. */\n GREEN_GROWTH2050 = 'GREEN_GROWTH2050',\n /** Green Key. */\n GREEN_KEY = 'GREEN_KEY',\n /** Geen Key Eco Rating. */\n GREEN_KEY_ECO_RATING = 'GREEN_KEY_ECO_RATING',\n /** Green Seal. */\n GREEN_SEAL = 'GREEN_SEAL',\n /** Green Star Hotel Standard. */\n GREEN_STAR = 'GREEN_STAR',\n /** Green Tourism Active Standard. */\n GREEN_TOURISM_ACTIVE = 'GREEN_TOURISM_ACTIVE',\n /** Hilton LightStay. */\n HILTON_LIGHTSTAY = 'HILTON_LIGHTSTAY',\n /** Hostelling International's Quality and Sustainability Standard. */\n HOSTELLING_INTERNATIONALS_QUALITY_AND_SUSTAINABILITY = 'HOSTELLING_INTERNATIONALS_QUALITY_AND_SUSTAINABILITY',\n /** Hoteles más Verdes (AHT) Standard. */\n HOTELES_MAS_VERDES = 'HOTELES_MAS_VERDES',\n /** Nordic Swan Ecolabel. */\n NORDIC_SWAN_ECOLABEL = 'NORDIC_SWAN_ECOLABEL',\n /** Preferred by Nature Sustainable Tourism Standard for Accommodation. */\n PREFERRED_BY_NATURE_SUSTAINABLE_TOURISM = 'PREFERRED_BY_NATURE_SUSTAINABLE_TOURISM',\n /** Sustainable Travel Ireland – GSTC Industry Criteria. */\n SUSTAINABLE_TRAVEL_IRELAND = 'SUSTAINABLE_TRAVEL_IRELAND',\n /** TOFTigers Initiative's Pug Standard. */\n TOF_TIGERS_INITITIVES_PUG = 'TOF_TIGERS_INITITIVES_PUG',\n /** Travelife Standard for Hotels & Accommodations. */\n TRAVELIFE = 'TRAVELIFE',\n /** United Certification Systems Limited. */\n UNITED_CERTIFICATION_SYSTEMS_LIMITED = 'UNITED_CERTIFICATION_SYSTEMS_LIMITED',\n /** Vireo Srl. */\n VIREO_SRL = 'VIREO_SRL',\n}\n\n/** @enumType */\nexport type EcoCertificateWithLiterals =\n | EcoCertificate\n | 'ISO14001'\n | 'ISO50001'\n | 'ASIAN_ECOTOURISM'\n | 'BIOSPHERE_RESPOSNIBLE_TOURISM'\n | 'BUREAU_VERITAS'\n | 'CONTROL_UNION'\n | 'EARTHCHECK'\n | 'ECO_CERTIFICATION_MALTA'\n | 'ECOTOURISM_AUSTRALIAS_ECO'\n | 'GREAT_GREEN_DEAL'\n | 'GREEN_GLOBE'\n | 'GREEN_GROWTH2050'\n | 'GREEN_KEY'\n | 'GREEN_KEY_ECO_RATING'\n | 'GREEN_SEAL'\n | 'GREEN_STAR'\n | 'GREEN_TOURISM_ACTIVE'\n | 'HILTON_LIGHTSTAY'\n | 'HOSTELLING_INTERNATIONALS_QUALITY_AND_SUSTAINABILITY'\n | 'HOTELES_MAS_VERDES'\n | 'NORDIC_SWAN_ECOLABEL'\n | 'PREFERRED_BY_NATURE_SUSTAINABLE_TOURISM'\n | 'SUSTAINABLE_TRAVEL_IRELAND'\n | 'TOF_TIGERS_INITITIVES_PUG'\n | 'TRAVELIFE'\n | 'UNITED_CERTIFICATION_SYSTEMS_LIMITED'\n | 'VIREO_SRL';\n\nexport enum UnitTier {\n /**\n * Standard unit. The predominant and most basic guestroom type available at the hotel. All\n * other guestroom types include the features/amenities of this room, as well as additional\n * features/amenities.\n */\n STANDARD_UNIT = 'STANDARD_UNIT',\n /**\n * Deluxe unit. A guestroom type that builds on the features of the standard guestroom by\n * offering additional amenities and/or more space, and/or views. The room rate is higher\n * than that of the standard room type. Also known as Superior. Only allowed if another unit\n * type is a standard tier.\n */\n DELUXE_UNIT = 'DELUXE_UNIT',\n}\n\n/** @enumType */\nexport type UnitTierWithLiterals = UnitTier | 'STANDARD_UNIT' | 'DELUXE_UNIT';\n\n/** An individual room, such as kitchen, bathroom, bedroom, within a bookable guest unit. */\nexport interface LivingArea {\n /** Accessibility features of the living area. */\n accessibility?: LivingAreaAccessibility;\n /** Information about eating features in the living area. */\n eating?: LivingAreaEating;\n /** Features in the living area. */\n features?: LivingAreaFeatures;\n /** Information about the layout of the living area. */\n layout?: LivingAreaLayout;\n /** Information about sleeping features in the living area. */\n sleeping?: LivingAreaSleeping;\n}\n\n/** Accessibility features of the living area. */\nexport interface LivingAreaAccessibility {\n /**\n * ADA compliant unit. A guestroom designed to accommodate the physical challenges of a guest\n * with mobility and/or auditory and/or visual issues, as determined by legislative policy.\n * Usually features enlarged doorways, roll-in showers with seats, bathroom grab bars, and\n * communication equipment for the hearing and sight challenged.\n */\n adaCompliantUnit?: boolean | null;\n /** ADA compliant unit exception. */\n adaCompliantUnitException?: AmenityExceptionWithLiterals;\n /** Hearing-accessible doorbell. A visual indicator(s) of a knock or ring at the door. */\n hearingAccessibleDoorbell?: boolean | null;\n /** Hearing-accessible doorbell exception. */\n hearingAccessibleDoorbellException?: AmenityExceptionWithLiterals;\n /**\n * Hearing-accessible fire alarm. A device that gives warning of a fire through flashing\n * lights.\n */\n hearingAccessibleFireAlarm?: boolean | null;\n /** Hearing-accessible fire alarm exception. */\n hearingAccessibleFireAlarmException?: AmenityExceptionWithLiterals;\n /**\n * Hearing-accessible unit. A guestroom designed to accommodate the physical challenges of a\n * guest with auditory issues.\n */\n hearingAccessibleUnit?: boolean | null;\n /** Hearing-accessible unit exception. */\n hearingAccessibleUnitException?: AmenityExceptionWithLiterals;\n /**\n * Mobility-accessible bathtub. A bathtub that accomodates the physically challenged with\n * additional railings or hand grips, a transfer seat or lift, and/or a door to enable walking\n * into the tub.\n */\n mobilityAccessibleBathtub?: boolean | null;\n /** Mobility-accessible bathtub exception. */\n mobilityAccessibleBathtubException?: AmenityExceptionWithLiterals;\n /**\n * Mobility-accessible shower. A shower with an enlarged door or access point to accommodate a\n * wheelchair or a waterproof seat for the physically challenged.\n */\n mobilityAccessibleShower?: boolean | null;\n /** Mobility-accessible shower exception. */\n mobilityAccessibleShowerException?: AmenityExceptionWithLiterals;\n /**\n * Mobility-accessible toilet. A toilet with a higher seat, grab bars, and/or a larger area\n * around it to accommodate the physically challenged.\n */\n mobilityAccessibleToilet?: boolean | null;\n /** Mobility-accessible toilet exception. */\n mobilityAccessibleToiletException?: AmenityExceptionWithLiterals;\n /**\n * Mobility-accessible unit. A guestroom designed to accommodate the physical challenges of a\n * guest with mobility and/or auditory and/or visual issues. Usually features enlarged\n * doorways, roll-in showers with seats, bathroom grab bars, and communication equipment for\n * the hearing and sight challenged.\n */\n mobilityAccessibleUnit?: boolean | null;\n /** Mobility-accessible unit exception. */\n mobilityAccessibleUnitException?: AmenityExceptionWithLiterals;\n}\n\n/** Information about eating features in the living area. */\nexport interface LivingAreaEating {\n /**\n * Coffee maker. An electric appliance that brews coffee by heating and forcing water through\n * ground coffee.\n */\n coffeeMaker?: boolean | null;\n /** Coffee maker exception. */\n coffeeMakerException?: AmenityExceptionWithLiterals;\n /** Cookware. Kitchen pots, pans and utensils used in connection with the preparation of food. */\n cookware?: boolean | null;\n /** Cookware exception. */\n cookwareException?: AmenityExceptionWithLiterals;\n /**\n * Dishwasher. A counter-height electrical cabinet containing racks for dirty dishware,\n * cookware and cutlery, and a dispenser for soap built into the pull-down door. The cabinet is\n * attached to the plumbing system to facilitate the automatic cleaning of its contents.\n */\n dishwasher?: boolean | null;\n /** Dishwasher exception. */\n dishwasherException?: AmenityExceptionWithLiterals;\n /**\n * Indoor grill. Metal grates built into an indoor cooktop on which food is cooked over an open\n * flame or electric heat source.\n */\n indoorGrill?: boolean | null;\n /** Indoor grill exception. */\n indoorGrillException?: AmenityExceptionWithLiterals;\n /** Kettle. A covered container with a handle and a spout used for boiling water. */\n kettle?: boolean | null;\n /** Kettle exception. */\n kettleException?: AmenityExceptionWithLiterals;\n /**\n * Kitchen available. An area of the guestroom designated for the preparation and storage of\n * food via the presence of a refrigerator, cook top, oven and sink, as well as cutlery, dishes\n * and cookware. Usually includes small appliances such a coffee maker and a microwave. May or\n * may not include an automatic dishwasher.\n */\n kitchenAvailable?: boolean | null;\n /** Kitchen available exception. */\n kitchenAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Microwave. An electric oven that quickly cooks and heats food by microwave energy. Smaller\n * than a standing or wall mounted oven. Usually placed on a kitchen counter, a shelf or\n * tabletop or mounted above a cooktop.\n */\n microwave?: boolean | null;\n /** Microwave exception. */\n microwaveException?: AmenityExceptionWithLiterals;\n /**\n * Minibar. A small refrigerated cabinet in the guestroom containing bottles/cans of soft\n * drinks, mini bottles of alcohol, and snacks. The items are most commonly available for a\n * fee.\n */\n minibar?: boolean | null;\n /** Minibar exception. */\n minibarException?: AmenityExceptionWithLiterals;\n /**\n * Outdoor grill. Metal grates on which food is cooked over an open flame or electric heat\n * source. Part of an outdoor apparatus that supports the grates. Also known as barbecue grill\n * or barbecue.\n */\n outdoorGrill?: boolean | null;\n /** Outdoor grill exception. */\n outdoorGrillException?: AmenityExceptionWithLiterals;\n /**\n * Oven. A temperature controlled, heated metal cabinet powered by gas or electricity in which\n * food is placed for the purpose of cooking or reheating.\n */\n oven?: boolean | null;\n /** Oven exception. */\n ovenException?: AmenityExceptionWithLiterals;\n /**\n * Refrigerator. A large, climate-controlled electrical cabinet with vertical doors. Built for\n * the purpose of chilling and storing perishable foods.\n */\n refrigerator?: boolean | null;\n /** Refrigerator exception. */\n refrigeratorException?: AmenityExceptionWithLiterals;\n /**\n * Sink. A basin with a faucet attached to a water source and used for the purpose of washing\n * and rinsing.\n */\n sink?: boolean | null;\n /** Sink exception. */\n sinkException?: AmenityExceptionWithLiterals;\n /**\n * Snackbar. A small cabinet in the guestroom containing snacks. The items are most commonly\n * available for a fee.\n */\n snackbar?: boolean | null;\n /** Snackbar exception. */\n snackbarException?: AmenityExceptionWithLiterals;\n /**\n * Stove. A kitchen appliance powered by gas or electricity for the purpose of creating a flame\n * or hot surface on which pots of food can be cooked. Also known as cooktop or hob.\n */\n stove?: boolean | null;\n /** Stove exception. */\n stoveException?: AmenityExceptionWithLiterals;\n /** Tea station. A small area with the supplies needed to heat water and make tea. */\n teaStation?: boolean | null;\n /** Tea station exception. */\n teaStationException?: AmenityExceptionWithLiterals;\n /**\n * Toaster. A small, temperature controlled electric appliance with rectangular slots at the\n * top that are lined with heated coils for the purpose of browning slices of bread products.\n */\n toaster?: boolean | null;\n /** Toaster exception. */\n toasterException?: AmenityExceptionWithLiterals;\n}\n\n/** Features in the living area. */\nexport interface LivingAreaFeatures {\n /** Air conditioning. An electrical machine used to cool the temperature of the guestroom. */\n airConditioning?: boolean | null;\n /** Air conditioning exception. */\n airConditioningException?: AmenityExceptionWithLiterals;\n /**\n * Bathtub. A fixed plumbing feature set on the floor and consisting of a large container that\n * accommodates the body of an adult for the purpose of seated bathing. Includes knobs or\n * fixtures to control the temperature of the water, a faucet through which the water flows,\n * and a drain that can be closed for filling and opened for draining.\n */\n bathtub?: boolean | null;\n /** Bathtub exception. */\n bathtubException?: AmenityExceptionWithLiterals;\n /**\n * Bidet. A plumbing fixture attached to a toilet or a low, fixed sink designed for the purpose\n * of washing after toilet use.\n */\n bidet?: boolean | null;\n /** Bidet exception. */\n bidetException?: AmenityExceptionWithLiterals;\n /** Dryer. An electrical machine designed to dry clothing. */\n dryer?: boolean | null;\n /** Dryer exception. */\n dryerException?: AmenityExceptionWithLiterals;\n /**\n * Electronic room key. A card coded by the check-in computer that is read by the lock on the\n * hotel guestroom door to allow for entry.\n */\n electronicRoomKey?: boolean | null;\n /** Electronic room key exception. */\n electronicRoomKeyException?: AmenityExceptionWithLiterals;\n /**\n * Fireplace. A framed opening (aka hearth) at the base of a chimney in which logs or an\n * electrical fire feature are burned to provide a relaxing ambiance or to heat the room. Often\n * made of bricks or stone.\n */\n fireplace?: boolean | null;\n /** Fireplace exception. */\n fireplaceException?: AmenityExceptionWithLiterals;\n /**\n * Hairdryer. A handheld electric appliance that blows temperature-controlled air for the\n * purpose of drying wet hair. Can be mounted to a bathroom wall or a freestanding device\n * stored in the guestroom's bathroom or closet.\n */\n hairdryer?: boolean | null;\n /** Hairdryer exception. */\n hairdryerException?: AmenityExceptionWithLiterals;\n /** Heating. An electrical machine used to warm the temperature of the guestroom. */\n heating?: boolean | null;\n /** Heating exception. */\n heatingException?: AmenityExceptionWithLiterals;\n /**\n * In-unit safe. A strong fireproof cabinet with a programmable lock, used for the protected\n * storage of valuables in a guestroom. Often built into a closet.\n */\n inunitSafe?: boolean | null;\n /** In-unit safe exception. */\n inunitSafeException?: AmenityExceptionWithLiterals;\n /**\n * In-unit Wifi available. Guests can wirelessly connect to the Internet in the guestroom. Can\n * be free or for a fee.\n */\n inunitWifiAvailable?: boolean | null;\n /** In-unit Wifi available exception. */\n inunitWifiAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Ironing equipment. A device, usually with a flat metal base, that is heated to smooth,\n * finish, or press clothes and a flat, padded, cloth-covered surface on which the clothes are\n * worked.\n */\n ironingEquipment?: boolean | null;\n /** Ironing equipment exception. */\n ironingEquipmentException?: AmenityExceptionWithLiterals;\n /**\n * Pay per view movies. Televisions with channels that offer films that can be viewed for a\n * fee, and have an interface to allow the viewer to accept the terms and approve payment.\n */\n payPerViewMovies?: boolean | null;\n /** Pay per view movies exception. */\n payPerViewMoviesException?: AmenityExceptionWithLiterals;\n /**\n * Private bathroom. A bathroom designated for the express use of the guests staying in a\n * specific guestroom.\n */\n privateBathroom?: boolean | null;\n /** Private bathroom exception. */\n privateBathroomException?: AmenityExceptionWithLiterals;\n /**\n * Shower. A fixed plumbing fixture for standing bathing that features a tall spray spout or\n * faucet through which water flows, a knob or knobs that control the water's temperature, and\n * a drain in the floor.\n */\n shower?: boolean | null;\n /** Shower exception. */\n showerException?: AmenityExceptionWithLiterals;\n /**\n * Toilet. A fixed bathroom feature connected to a sewer or septic system and consisting of a\n * water-flushed bowl with a seat, as well as a device that elicites the water-flushing action.\n * Used for the process and disposal of human waste.\n */\n toilet?: boolean | null;\n /** Toilet exception. */\n toiletException?: AmenityExceptionWithLiterals;\n /** TV. A television is available in the guestroom. */\n tv?: boolean | null;\n /**\n * TV casting. A television equipped with a device through which the video entertainment\n * accessed on a personal computer, phone or tablet can be wirelessly delivered to and viewed\n * on the guestroom's television.\n */\n tvCasting?: boolean | null;\n /** TV exception. */\n tvCastingException?: AmenityExceptionWithLiterals;\n /** TV exception. */\n tvException?: AmenityExceptionWithLiterals;\n /**\n * TV streaming. Televisions that embed a range of web-based apps to allow for watching media\n * from those apps.\n */\n tvStreaming?: boolean | null;\n /** TV streaming exception. */\n tvStreamingException?: AmenityExceptionWithLiterals;\n /**\n * Universal power adapters. A power supply for electronic devices which plugs into a wall for\n * the purpose of converting AC to a single DC voltage. Also know as AC adapter or charger.\n */\n universalPowerAdapters?: boolean | null;\n /** Universal power adapters exception. */\n universalPowerAdaptersException?: AmenityExceptionWithLiterals;\n /**\n * Washer. An electrical machine connected to a running water source designed to launder\n * clothing.\n */\n washer?: boolean | null;\n /** Washer exception. */\n washerException?: AmenityExceptionWithLiterals;\n}\n\n/** Information about the layout of the living area. */\nexport interface LivingAreaLayout {\n /**\n * Balcony. An outdoor platform attached to a building and surrounded by a short wall, fence or\n * other safety railing. The balcony is accessed through a door in a guestroom or suite and is\n * for use by the guest staying in that room. May or may not include seating or outdoor\n * furniture. Is not located on the ground floor. Also lanai.\n */\n balcony?: boolean | null;\n /** Balcony exception. */\n balconyException?: AmenityExceptionWithLiterals;\n /** Living area sq meters. The measurement in meters of the area of a guestroom's living space. */\n livingAreaSqMeters?: number | null;\n /** Living area sq meters exception. */\n livingAreaSqMetersException?: AmenityExceptionWithLiterals;\n /**\n * Loft. A three-walled upper area accessed by stairs or a ladder that overlooks the lower area\n * of a room.\n */\n loft?: boolean | null;\n /** Loft exception. */\n loftException?: AmenityExceptionWithLiterals;\n /** Non smoking. A guestroom in which the smoking of cigarettes, cigars and pipes is prohibited. */\n nonSmoking?: boolean | null;\n /** Non smoking exception. */\n nonSmokingException?: AmenityExceptionWithLiterals;\n /**\n * Patio. A paved, outdoor area with seating attached to and accessed through a ground-floor\n * guestroom for use by the occupants of the guestroom.\n */\n patio?: boolean | null;\n /** Patio exception. */\n patioException?: AmenityExceptionWithLiterals;\n /** Stairs. There are steps leading from one level or story to another in the unit. */\n stairs?: boolean | null;\n /** Stairs exception. */\n stairsException?: AmenityExceptionWithLiterals;\n}\n\n/** Information about sleeping features in the living area. */\nexport interface LivingAreaSleeping {\n /**\n * Beds count. The number of permanent beds present in a guestroom. Does not include rollaway\n * beds, cribs or sofabeds.\n */\n bedsCount?: number | null;\n /** Beds count exception. */\n bedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Bunk beds count. The number of furniture pieces in which one framed mattress is fixed\n * directly above another by means of a physical frame. This allows one person(s) to sleep in\n * the bottom bunk and one person(s) to sleep in the top bunk. Also known as double decker bed.\n */\n bunkBedsCount?: number | null;\n /** Bunk beds count exception. */\n bunkBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Cribs count. The number of small beds for an infant or toddler that the guestroom can\n * obtain. The bed is surrounded by a high railing to prevent the child from falling or\n * climbing out of the bed\n */\n cribsCount?: number | null;\n /** Cribs count exception. */\n cribsCountException?: AmenityExceptionWithLiterals;\n /**\n * Double beds count. The number of medium beds measuring 53\"W x 75\"L (135cm x 191cm). Also\n * known as full size bed.\n */\n doubleBedsCount?: number | null;\n /** Double beds count exception. */\n doubleBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Feather pillows. The option for guests to obtain bed pillows that are stuffed with the\n * feathers and down of ducks or geese.\n */\n featherPillows?: boolean | null;\n /** Feather pillows exception. */\n featherPillowsException?: AmenityExceptionWithLiterals;\n /**\n * Hypoallergenic bedding. Bedding such as linens, pillows, mattress covers and/or mattresses\n * that are made of materials known to be resistant to allergens such as mold, dust and dander.\n */\n hypoallergenicBedding?: boolean | null;\n /** Hypoallergenic bedding exception. */\n hypoallergenicBeddingException?: AmenityExceptionWithLiterals;\n /**\n * King beds count. The number of large beds measuring 76\"W x 80\"L (193cm x 102cm). Most often\n * meant to accompany two people. Includes California king and super king.\n */\n kingBedsCount?: number | null;\n /** King beds count exception. */\n kingBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Memory foam pillows. The option for guests to obtain bed pillows that are stuffed with a\n * man-made foam that responds to body heat by conforming to the body closely, and then\n * recovers its shape when the pillow cools down.\n */\n memoryFoamPillows?: boolean | null;\n /** Memory foam pillows exception. */\n memoryFoamPillowsException?: AmenityExceptionWithLiterals;\n /**\n * Other beds count. The number of beds that are not standard mattress and boxspring setups\n * such as Japanese tatami mats, trundle beds, air mattresses and cots.\n */\n otherBedsCount?: number | null;\n /** Other beds count exception. */\n otherBedsCountException?: AmenityExceptionWithLiterals;\n /** Queen beds count. The number of medium-large beds measuring 60\"W x 80\"L (152cm x 102cm). */\n queenBedsCount?: number | null;\n /** Queen beds count exception. */\n queenBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Roll away beds count. The number of mattresses on wheeled frames that can be folded in half\n * and rolled away for easy storage that the guestroom can obtain upon request.\n */\n rollAwayBedsCount?: number | null;\n /** Roll away beds count exception. */\n rollAwayBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Single or twin count beds. The number of smaller beds measuring 38\"W x 75\"L (97cm x 191cm)\n * that can accommodate one adult.\n */\n singleOrTwinBedsCount?: number | null;\n /** Single or twin beds count exception. */\n singleOrTwinBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Sofa beds count. The number of specially designed sofas that can be made to serve as a bed\n * by lowering its hinged upholstered back to horizontal position or by pulling out a concealed\n * mattress.\n */\n sofaBedsCount?: number | null;\n /** Sofa beds count exception. */\n sofaBedsCountException?: AmenityExceptionWithLiterals;\n /**\n * Synthetic pillows. The option for guests to obtain bed pillows stuffed with polyester\n * material crafted to reproduce the feel of a pillow stuffed with down and feathers.\n */\n syntheticPillows?: boolean | null;\n /** Synthetic pillows exception. */\n syntheticPillowsException?: AmenityExceptionWithLiterals;\n}\n\n/** Views available from the guest unit itself. */\nexport interface ViewsFromUnit {\n /** Beach view. A guestroom that features a window through which guests can see the beach. */\n beachView?: boolean | null;\n /** Beach view exception. */\n beachViewException?: AmenityExceptionWithLiterals;\n /**\n * City view. A guestroom that features a window through which guests can see the buildings,\n * parks and/or streets of the city.\n */\n cityView?: boolean | null;\n /** City view exception. */\n cityViewException?: AmenityExceptionWithLiterals;\n /** Garden view. A guestroom that features a window through which guests can see a garden. */\n gardenView?: boolean | null;\n /** Garden view exception. */\n gardenViewException?: AmenityExceptionWithLiterals;\n /** Lake view. */\n lakeView?: boolean | null;\n /** Lake view exception. */\n lakeViewException?: AmenityExceptionWithLiterals;\n /**\n * Landmark view. A guestroom that features a window through which guests can see a landmark\n * such as the countryside, a golf course, the forest, a park, a rain forst, a mountain or a\n * slope.\n */\n landmarkView?: boolean | null;\n /** Landmark view exception. */\n landmarkViewException?: AmenityExceptionWithLiterals;\n /** Ocean view. A guestroom that features a window through which guests can see the ocean. */\n oceanView?: boolean | null;\n /** Ocean view exception. */\n oceanViewException?: AmenityExceptionWithLiterals;\n /**\n * Pool view. A guestroom that features a window through which guests can see the hotel's\n * swimming pool.\n */\n poolView?: boolean | null;\n /** Pool view exception. */\n poolViewException?: AmenityExceptionWithLiterals;\n /** Valley view. A guestroom that features a window through which guests can see over a valley. */\n valleyView?: boolean | null;\n /** Valley view exception. */\n valleyViewException?: AmenityExceptionWithLiterals;\n}\n\n/** Features and available amenities in the guest unit. */\nexport interface GuestUnitFeatures {\n /**\n * Bungalow or villa. An independent structure that is part of a hotel or resort that is rented\n * to one party for a vacation stay. The hotel or resort may be completely comprised of\n * bungalows or villas, or they may be one of several guestroom options. Guests in the\n * bungalows or villas most often have the same, if not more, amenities and services offered to\n * guests in other guestroom types.\n */\n bungalowOrVilla?: boolean | null;\n /** Bungalow or villa exception. */\n bungalowOrVillaException?: AmenityExceptionWithLiterals;\n /**\n * Connecting unit available. A guestroom type that features access to an adjacent guestroom\n * for the purpose of booking both rooms. Most often used by families who need more than one\n * room to accommodate the number of people in their group.\n */\n connectingUnitAvailable?: boolean | null;\n /** Connecting unit available exception. */\n connectingUnitAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Executive floor. A floor of the hotel where the guestrooms are only bookable by members of\n * the hotel's frequent guest membership program. Benefits of this room class include access to\n * a designated lounge which may or may not feature free breakfast, cocktails or other perks\n * specific to members of the program.\n */\n executiveFloor?: boolean | null;\n /** Executive floor exception. */\n executiveFloorException?: AmenityExceptionWithLiterals;\n /**\n * Max adult occupants count. The total number of adult guests allowed to stay overnight in the\n * guestroom.\n */\n maxAdultOccupantsCount?: number | null;\n /** Max adult occupants count exception. */\n maxAdultOccupantsCountException?: AmenityExceptionWithLiterals;\n /**\n * Max child occupants count. The total number of children allowed to stay overnight in the\n * room.\n */\n maxChildOccupantsCount?: number | null;\n /** Max child occupants count exception. */\n maxChildOccupantsCountException?: AmenityExceptionWithLiterals;\n /** Max occupants count. The total number of guests allowed to stay overnight in the guestroom. */\n maxOccupantsCount?: number | null;\n /** Max occupants count exception. */\n maxOccupantsCountException?: AmenityExceptionWithLiterals;\n /**\n * Private home. A privately owned home (house, townhouse, apartment, cabin, bungalow etc) that\n * may or not serve as the owner's residence, but is rented out in its entirety or by the\n * room(s) to paying guest(s) for vacation stays. Not for lease-based, long-term residency.\n */\n privateHome?: boolean | null;\n /** Private home exception. */\n privateHomeException?: AmenityExceptionWithLiterals;\n /**\n * Suite. A guestroom category that implies both a bedroom area and a separate living area.\n * There may or may not be full walls and doors separating the two areas, but regardless, they\n * are very distinct. Does not mean a couch or chair in a bedroom.\n */\n suite?: boolean | null;\n /** Suite exception. */\n suiteException?: AmenityExceptionWithLiterals;\n /**\n * Tier. Classification of the unit based on available features/amenities. A non-standard tier\n * is only permitted if at least one other unit type falls under the standard tier.\n */\n tier?: UnitTierWithLiterals;\n /** Tier exception. */\n tierException?: AmenityExceptionWithLiterals;\n /** Features available in the living areas in the guest unit. */\n totalLivingAreas?: LivingArea;\n /** Views available from the guest unit itself. */\n views?: ViewsFromUnit;\n}\n\n/** Enhanced cleaning measures implemented by the hotel during COVID-19. */\nexport interface EnhancedCleaning {\n /** Commercial-grade disinfectant used to clean the property. */\n commercialGradeDisinfectantCleaning?: boolean | null;\n /** Commercial grade disinfectant cleaning exception. */\n commercialGradeDisinfectantCleaningException?: AmenityExceptionWithLiterals;\n /** Enhanced cleaning of common areas. */\n commonAreasEnhancedCleaning?: boolean | null;\n /** Common areas enhanced cleaning exception. */\n commonAreasEnhancedCleaningException?: AmenityExceptionWithLiterals;\n /** Employees trained in COVID-19 cleaning procedures. */\n employeesTrainedCleaningProcedures?: boolean | null;\n /** Employees trained cleaning procedures exception. */\n employeesTrainedCleaningProceduresException?: AmenityExceptionWithLiterals;\n /** Employees trained in thorough hand-washing. */\n employeesTrainedThoroughHandWashing?: boolean | null;\n /** Employees trained thorough hand washing exception. */\n employeesTrainedThoroughHandWashingException?: AmenityExceptionWithLiterals;\n /** Employees wear masks, face shields, and/or gloves. */\n employeesWearProtectiveEquipment?: boolean | null;\n /** Employees wear protective equipment exception. */\n employeesWearProtectiveEquipmentException?: AmenityExceptionWithLiterals;\n /** Enhanced cleaning of guest rooms. */\n guestRoomsEnhancedCleaning?: boolean | null;\n /** Guest rooms enhanced cleaning exception. */\n guestRoomsEnhancedCleaningException?: AmenityExceptionWithLiterals;\n}\n\n/** Increased food safety measures implemented by the hotel during COVID-19. */\nexport interface IncreasedFoodSafety {\n /** Additional sanitation in dining areas. */\n diningAreasAdditionalSanitation?: boolean | null;\n /** Dining areas additional sanitation exception. */\n diningAreasAdditionalSanitationException?: AmenityExceptionWithLiterals;\n /** Disposable flatware. */\n disposableFlatware?: boolean | null;\n /** Disposable flatware exception. */\n disposableFlatwareException?: AmenityExceptionWithLiterals;\n /** Additional safety measures during food prep and serving. */\n foodPreparationAndServingAdditionalSafety?: boolean | null;\n /** Food preparation and serving additional safety exception. */\n foodPreparationAndServingAdditionalSafetyException?: AmenityExceptionWithLiterals;\n /** Individually-packaged meals. */\n individualPackagedMeals?: boolean | null;\n /** Individual packaged meals exception. */\n individualPackagedMealsException?: AmenityExceptionWithLiterals;\n /** Single-use menus. */\n singleUseFoodMenus?: boolean | null;\n /** Single use food menus exception. */\n singleUseFoodMenusException?: AmenityExceptionWithLiterals;\n}\n\n/** Minimized contact measures implemented by the hotel during COVID-19. */\nexport interface MinimizedContact {\n /** No-contact check-in and check-out. */\n contactlessCheckinCheckout?: boolean | null;\n /** Contactless check-in check-out exception. */\n contactlessCheckinCheckoutException?: AmenityExceptionWithLiterals;\n /** Keyless mobile entry to guest rooms. */\n digitalGuestRoomKeys?: boolean | null;\n /** Digital guest room keys exception. */\n digitalGuestRoomKeysException?: AmenityExceptionWithLiterals;\n /** Housekeeping scheduled by request only. */\n housekeepingScheduledRequestOnly?: boolean | null;\n /** Housekeeping scheduled request only exception. */\n housekeepingScheduledRequestOnlyException?: AmenityExceptionWithLiterals;\n /** High-touch items, such as magazines, removed from common areas. */\n noHighTouchItemsCommonAreas?: boolean | null;\n /** No high touch items common areas exception. */\n noHighTouchItemsCommonAreasException?: AmenityExceptionWithLiterals;\n /** High-touch items, such as decorative pillows, removed from guest rooms. */\n noHighTouchItemsGuestRooms?: boolean | null;\n /** No high touch items guest rooms exception. */\n noHighTouchItemsGuestRoomsException?: AmenityExceptionWithLiterals;\n /** Plastic key cards are disinfected or discarded. */\n plasticKeycardsDisinfected?: boolean | null;\n /** Plastic keycards disinfected exception. */\n plasticKeycardsDisinfectedException?: AmenityExceptionWithLiterals;\n /** Buffer maintained between room bookings. */\n roomBookingsBuffer?: boolean | null;\n /** Room bookings buffer exception. */\n roomBookingsBufferException?: AmenityExceptionWithLiterals;\n}\n\n/** Personal protection measures implemented by the hotel during COVID-19. */\nexport interface PersonalProtection {\n /** Hand-sanitizer and/or sanitizing wipes are offered in common areas. */\n commonAreasOfferSanitizingItems?: boolean | null;\n /** Common areas offer sanitizing items exception. */\n commonAreasOfferSanitizingItemsException?: AmenityExceptionWithLiterals;\n /** Masks required on the property. */\n faceMaskRequired?: boolean | null;\n /** Face mask required exception. */\n faceMaskRequiredException?: AmenityExceptionWithLiterals;\n /** In-room hygiene kits with masks, hand sanitizer, and/or antibacterial wipes. */\n guestRoomHygieneKitsAvailable?: boolean | null;\n /** Guest room hygiene kits available exception. */\n guestRoomHygieneKitsAvailableException?: AmenityExceptionWithLiterals;\n /** Masks and/or gloves available for guests. */\n protectiveEquipmentAvailable?: boolean | null;\n /** Protective equipment available exception. */\n protectiveEquipmentAvailableException?: AmenityExceptionWithLiterals;\n}\n\n/** Physical distancing measures implemented by the hotel during COVID-19. */\nexport interface PhysicalDistancing {\n /** Common areas arranged to maintain physical distancing. */\n commonAreasPhysicalDistancingArranged?: boolean | null;\n /** Common areas physical distancing arranged exception. */\n commonAreasPhysicalDistancingArrangedException?: AmenityExceptionWithLiterals;\n /** Physical distancing required. */\n physicalDistancingRequired?: boolean | null;\n /** Physical distancing required exception. */\n physicalDistancingRequiredException?: AmenityExceptionWithLiterals;\n /** Safety dividers at front desk and other locations. */\n safetyDividers?: boolean | null;\n /** Safety dividers exception. */\n safetyDividersException?: AmenityExceptionWithLiterals;\n /** Guest occupancy limited within shared facilities. */\n sharedAreasLimitedOccupancy?: boolean | null;\n /** Shared areas limited occupancy exception. */\n sharedAreasLimitedOccupancyException?: AmenityExceptionWithLiterals;\n /** Private spaces designated in spa and wellness areas. */\n wellnessAreasHavePrivateSpaces?: boolean | null;\n /** Wellness areas have private spaces exception. */\n wellnessAreasHavePrivateSpacesException?: AmenityExceptionWithLiterals;\n}\n\n/**\n * Represents a time of day. The date and time zone are either not significant or are specified\n * elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and\n * `google.protobuf.Timestamp`.\n */\nexport interface LodgingTimeOfDay {\n /**\n * Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be\n * less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like\n * business closing time.\n */\n hours?: number | null;\n /** Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59. */\n minutes?: number | null;\n /**\n * Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or\n * equal to 999,999,999.\n */\n nanos?: number | null;\n /**\n * Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or\n * equal to 59. An API may allow the value 60 if it allows leap-seconds.\n */\n seconds?: number | null;\n}\n\n/** Forms of payment accepted at the property. */\nexport interface PaymentOptions {\n /** Cash. The hotel accepts payment by paper/coin currency. */\n cash?: boolean | null;\n /** Cash exception. */\n cashException?: AmenityExceptionWithLiterals;\n /**\n * Cheque. The hotel accepts a printed document issued by the guest's bank in the guest's name\n * as a form of payment.\n */\n cheque?: boolean | null;\n /** Cheque exception. */\n chequeException?: AmenityExceptionWithLiterals;\n /**\n * Credit card. The hotel accepts payment by a card issued by a bank or credit card company.\n * Also known as charge card, debit card, bank card, or charge plate.\n */\n creditCard?: boolean | null;\n /** Credit card exception. */\n creditCardException?: AmenityExceptionWithLiterals;\n /**\n * Debit card. The hotel accepts a bank-issued card that immediately deducts the charged funds\n * from the guest's bank account upon processing.\n */\n debitCard?: boolean | null;\n /** Debit card exception. */\n debitCardException?: AmenityExceptionWithLiterals;\n /**\n * Mobile nfc. The hotel has the compatible computer hardware terminal that reads and charges a\n * payment app on the guest's smartphone without requiring the two devices to make physical\n * contact. Also known as Apple Pay, Google Pay, Samsung Pay.\n */\n mobileNfc?: boolean | null;\n /** Mobile nfc exception. */\n mobileNfcException?: AmenityExceptionWithLiterals;\n}\n\n/** Language spoken by at least one staff member. */\nexport interface LanguageSpoken {\n /**\n * Required. The BCP-47 language code for the spoken language. Currently accepted codes: ar,\n * de, en, es, fil, fr, hi, id, it, ja, ko, nl, pt, ru, vi, yue, zh.\n * @format LANGUAGE_TAG\n */\n languageCode?: string;\n /** At least one member of the staff can speak the language. */\n spoken?: boolean | null;\n /** Spoken exception. */\n spokenException?: AmenityExceptionWithLiterals;\n}\n\n/** Energy efficiency practices implemented at the hotel. */\nexport interface EnergyEfficiency {\n /**\n * Carbon free energy sources. Property sources carbon-free electricity via at least one of the\n * following methods: on-site clean energy generation, power purchase agreement(s) with clean\n * energy generators, green power provided by electricity supplier, or purchases of Energy\n * Attribute Certificates (such as Renewable Energy Certificates or Guarantees of Origin).\n */\n carbonFreeEnergySources?: boolean | null;\n /** Carbon free energy sources exception. */\n carbonFreeEnergySourcesException?: AmenityExceptionWithLiterals;\n /**\n * Energy conservation program. The property tracks corporate-level Scope 1 and 2 GHG\n * emissions, and Scope 3 emissions if available. The property has a commitment to implement\n * initiatives that reduce GHG emissions year over year. The property has shown an absolute\n * reduction in emissions for at least 2 years. Emissions are either verfied by a third-party\n * and/or published in external communications.\n */\n energyConservationProgram?: boolean | null;\n /** Energy conservation program exception. */\n energyConservationProgramException?: AmenityExceptionWithLiterals;\n /**\n * Energy efficient heating and cooling systems. The property doesn't use chlorofluorocarbon\n * (CFC)-based refrigerants in heating, ventilating, and air-conditioning systems unless a\n * third-party audit shows it's not economically feasible. The CFC-based refrigerants which are\n * used should have a Global Warming Potential (GWP) ≤ 10. The property uses occupancy sensors\n * on HVAC systems in back-of-house spaces, meeting rooms, and other low-traffic areas.\n */\n energyEfficientHeatingAndCoolingSystems?: boolean | null;\n /** Energy efficient heating and cooling systems exception. */\n energyEfficientHeatingAndCoolingSystemsException?: AmenityExceptionWithLiterals;\n /**\n * Energy efficient lighting. At least 75% of the property's lighting is energy efficient,\n * using lighting that is more than 45 lumens per watt – typically LED or CFL lightbulbs.\n */\n energyEfficientLighting?: boolean | null;\n /** Energy efficient lighting exception. */\n energyEfficientLightingException?: AmenityExceptionWithLiterals;\n /**\n * Energy saving thermostats. The property installed energy-saving thermostats throughout the\n * building to conserve energy when rooms or areas are not in use. Energy-saving thermostats\n * are devices that control heating/cooling in the building by learning temperature preferences\n * and automatically adjusting to energy-saving temperatures as the default. The thermostats\n * are automatically set to a temperature between 68-78 degrees F (20-26 °C), depending on\n * seasonality. In the winter, set the thermostat to 68°F (20°C) when the room is occupied,\n * lowering room temperature when unoccupied. In the summer, set the thermostat to 78°F (26°C)\n * when the room is occupied.\n */\n energySavingThermostats?: boolean | null;\n /** Energy saving thermostats exception. */\n energySavingThermostatsException?: AmenityExceptionWithLiterals;\n /**\n * Output only. Green building design. True if the property has been awarded a relevant\n * certification.\n * @readonly\n */\n greenBuildingDesign?: boolean | null;\n /**\n * Output only. Green building design exception.\n * @readonly\n */\n greenBuildingDesignException?: AmenityExceptionWithLiterals;\n /**\n * Independent organization audits energy use. The property conducts an energy audit at least\n * every 5 years, the results of which are either verified by a third-party and/or published in\n * external communications. An energy audit is a detailed assessment of the facility which\n * provides recommendations to existing operations and procedures to improve energy efficiency,\n * available incentives or rebates,and opportunities for improvements through renovations or\n * upgrades. Examples of organizations that conduct credible third party audits include: Engie\n * Impact, DNV GL (EU), Dexma, and local utility providers (they often provide energy and water\n * audits).\n */\n independentOrganizationAuditsEnergyUse?: boolean | null;\n /** Independent organization audits energy use exception. */\n independentOrganizationAuditsEnergyUseException?: AmenityExceptionWithLiterals;\n}\n\n/**\n * Sustainability certifications the hotel has been awarded. Deprecated: this message is no\n * longer populated. All certification data is now provided by BeCause.\n */\nexport interface SustainabilityCertifications {\n /** BREEAM certification. */\n breeamCertification?: BreeamCertificationWithLiterals;\n /** BREEAM certification exception. */\n breeamCertificationException?: AmenityExceptionWithLiterals;\n /**\n * The eco certificates awarded to the hotel.\n * @maxSize 50\n */\n ecoCertifications?: EcoCertification[];\n /** LEED certification. */\n leedCertification?: LeedCertificationWithLiterals;\n /** LEED certification exception. */\n leedCertificationException?: AmenityExceptionWithLiterals;\n}\n\nexport enum BreeamCertification {\n /** Not certified. */\n NO_BREEAM_CERTIFICATION = 'NO_BREEAM_CERTIFICATION',\n /** BREEAM Pass. */\n BREEAM_PASS = 'BREEAM_PASS',\n /** BREEAM Good. */\n BREEAM_GOOD = 'BREEAM_GOOD',\n /** BREEAM Very Good. */\n BREEAM_VERY_GOOD = 'BREEAM_VERY_GOOD',\n /** BREEAM Excellent. */\n BREEAM_EXCELLENT = 'BREEAM_EXCELLENT',\n /** BREEAM Outstanding. */\n BREEAM_OUTSTANDING = 'BREEAM_OUTSTANDING',\n}\n\n/** @enumType */\nexport type BreeamCertificationWithLiterals =\n | BreeamCertification\n | 'NO_BREEAM_CERTIFICATION'\n | 'BREEAM_PASS'\n | 'BREEAM_GOOD'\n | 'BREEAM_VERY_GOOD'\n | 'BREEAM_EXCELLENT'\n | 'BREEAM_OUTSTANDING';\n\n/**\n * An eco certificate awarded to the hotel. Deprecated: this message is no longer populated. All\n * certification data is now provided by BeCause.\n */\nexport interface EcoCertification {\n /** Whether the eco certificate was awarded or not. */\n awarded?: boolean | null;\n /** Awarded exception. */\n awardedException?: AmenityExceptionWithLiterals;\n /** Required. The eco certificate. */\n ecoCertificate?: EcoCertificateWithLiterals;\n}\n\nexport enum LeedCertification {\n /** Not certified. */\n NO_LEED_CERTIFICATION = 'NO_LEED_CERTIFICATION',\n /** LEED Certified. */\n LEED_CERTIFIED = 'LEED_CERTIFIED',\n /** LEED Silver. */\n LEED_SILVER = 'LEED_SILVER',\n /** LEED Gold. */\n LEED_GOLD = 'LEED_GOLD',\n /** LEED Platinum. */\n LEED_PLATINUM = 'LEED_PLATINUM',\n}\n\n/** @enumType */\nexport type LeedCertificationWithLiterals =\n | LeedCertification\n | 'NO_LEED_CERTIFICATION'\n | 'LEED_CERTIFIED'\n | 'LEED_SILVER'\n | 'LEED_GOLD'\n | 'LEED_PLATINUM';\n\n/** Sustainable sourcing practices implemented at the hotel. */\nexport interface SustainableSourcing {\n /**\n * Eco friendly toiletries. Soap, shampoo, lotion, and other toiletries provided for guests\n * have a nationally or internationally recognized sustainability certification, such as USDA\n * Organic, EU Organic, or cruelty-free.\n */\n ecoFriendlyToiletries?: boolean | null;\n /** Eco friendly toiletries exception. */\n ecoFriendlyToiletriesException?: AmenityExceptionWithLiterals;\n /**\n * Locally sourced food and beverages. Property sources locally in order to lower the\n * environmental footprint from reduced transportation and to stimulate the local economy.\n * Products produced less than 62 miles from the establishment are normally considered as\n * locally produced.\n */\n locallySourcedFoodAndBeverages?: boolean | null;\n /** Locally sourced food and beverages exception. */\n locallySourcedFoodAndBeveragesException?: AmenityExceptionWithLiterals;\n /**\n * Organic cage free eggs. The property sources 100% certified organic and cage-free eggs\n * (shell, liquid, and egg products). Cage-free means hens are able to walk, spread their wings\n * and lay their eggs in nests).\n */\n organicCageFreeEggs?: boolean | null;\n /** Organic cage free eggs exception. */\n organicCageFreeEggsException?: AmenityExceptionWithLiterals;\n /**\n * Organic food and beverages. At least 25% of food and beverages, by spend, are certified\n * organic. Organic means products that are certified to one of the organic standard listed in\n * the IFOAM family of standards. Qualifying certifications include USDA Organic and EU\n * Organic, among others.\n */\n organicFoodAndBeverages?: boolean | null;\n /** Organic food and beverages exception. */\n organicFoodAndBeveragesException?: AmenityExceptionWithLiterals;\n /**\n * Responsible purchasing policy. The property has a responsible procurement policy in place.\n * Responsible means integration of social, ethical, and/or environmental performance factors\n * into the procurement process when selecting suppliers.\n */\n responsiblePurchasingPolicy?: boolean | null;\n /** Responsible purchasing policy exception. */\n responsiblePurchasingPolicyException?: AmenityExceptionWithLiterals;\n /**\n * Responsibly sources seafood. The property does not source seafood from the Monterey Bay\n * Aquarium Seafood Watch \"avoid\" list, and must sustainably source seafood listed as \"good\n * alternative,\" \"eco-certified,\" and \"best choice\". The property has a policy outlining a\n * commitment to source Marine Stewardship Council (MSC) and/or Aquaculture Stewardship Council\n * (ASC) Chain of Custody certified seafood.\n */\n responsiblySourcesSeafood?: boolean | null;\n /** Responsibly sources seafood exception. */\n responsiblySourcesSeafoodException?: AmenityExceptionWithLiterals;\n /**\n * Vegan meals. The property provides vegan menu options for guests. Vegan food does not\n * contain animal products or byproducts.\n */\n veganMeals?: boolean | null;\n /** Vegan meals exception. */\n veganMealsException?: AmenityExceptionWithLiterals;\n /**\n * Vegetarian meals. The property provides vegetarian menu options for guests. Vegetarian food\n * does not contain meat, poultry, fish, or seafood.\n */\n vegetarianMeals?: boolean | null;\n /** Vegetarian meals exception. */\n vegetarianMealsException?: AmenityExceptionWithLiterals;\n}\n\n/** Waste reduction practices implemented at the hotel. */\nexport interface WasteReduction {\n /**\n * Compostable food containers and cutlery. 100% of food service containers and to-go cutlery\n * are compostable, and reusable utensils are offered wherever possible. Compostable materials\n * are capable of undergoing biological decomposition in a compost site, such that material is\n * not visually distinguishable and breaks down into carbon dioxide, water, inorganic\n * compounds, and biomass.\n */\n compostableFoodContainersAndCutlery?: boolean | null;\n /** Compostable food containers and cutlery exception. */\n compostableFoodContainersAndCutleryException?: AmenityExceptionWithLiterals;\n /**\n * Composts excess food. The property has a program and/or policy for diverting waste from\n * landfill by composting food and yard waste, either through compost collection and off-site\n * processing or on-site compost processing.\n */\n compostsExcessFood?: boolean | null;\n /** Composts excess food exception. */\n compostsExcessFoodException?: AmenityExceptionWithLiterals;\n /**\n * Donates excess food. The property has a program and/or policy for diverting waste from\n * landfill that may include efforts to donate for human consumption or divert food for animal\n * feed.\n */\n donatesExcessFood?: boolean | null;\n /** Donates excess food exception. */\n donatesExcessFoodException?: AmenityExceptionWithLiterals;\n /**\n * Food waste reduction program. The property has established a food waste reduction and\n * donation program, aiming to reduce food waste by half. These programs typically use tools\n * such as the Hotel Kitchen Toolkit and others to track waste and measure progress.\n */\n foodWasteReductionProgram?: boolean | null;\n /** Food waste reduction program exception. */\n foodWasteReductionProgramException?: AmenityExceptionWithLiterals;\n /** No single use plastic straws. The property bans single-use plastic straws. */\n noSingleUsePlasticStraws?: boolean | null;\n /** No single use plastic straws exception. */\n noSingleUsePlasticStrawsException?: AmenityExceptionWithLiterals;\n /** No single use plastic water bottles. The property bans single-use plastic water bottles. */\n noSingleUsePlasticWaterBottles?: boolean | null;\n /** No single use plastic water bottles exception. */\n noSingleUsePlasticWaterBottlesException?: AmenityExceptionWithLiterals;\n /**\n * No styrofoam food containers. The property eliminates the use of Styrofoam in disposable\n * food service items.\n */\n noStyrofoamFoodContainers?: boolean | null;\n /** No styrofoam food containers exception. */\n noStyrofoamFoodContainersException?: AmenityExceptionWithLiterals;\n /**\n * Recycling program. The property has a recycling program, aligned with LEED waste\n * requirements, and a policy outlining efforts to send less than 50% of waste to landfill. The\n * recycling program includes storage locations for recyclable materials, including mixed\n * paper, corrugated cardboard, glass, plastics, and metals.\n */\n recyclingProgram?: boolean | null;\n /** Recycling program exception. */\n recyclingProgramException?: AmenityExceptionWithLiterals;\n /**\n * Refillable toiletry containers. The property has replaced miniature individual containers\n * with refillable amenity dispensers for shampoo, conditioner, soap, and lotion.\n */\n refillableToiletryContainers?: boolean | null;\n /** Refillable toiletry containers exception. */\n refillableToiletryContainersException?: AmenityExceptionWithLiterals;\n /** Safely disposes batteries. The property safely stores and disposes batteries. */\n safelyDisposesBatteries?: boolean | null;\n /** Safely disposes batteries exception. */\n safelyDisposesBatteriesException?: AmenityExceptionWithLiterals;\n /**\n * Safely disposes electronics. The property has a reputable recycling program that keeps\n * hazardous electronic parts and chemical compounds out of landfills, dumps and other\n * unauthorized abandonment sites, and recycles/reuses applicable materials. (e.g. certified\n * electronics recyclers).\n */\n safelyDisposesElectronics?: boolean | null;\n /** Safely disposes electronics exception. */\n safelyDisposesElectronicsException?: AmenityExceptionWithLiterals;\n /** Safely disposes lightbulbs. The property safely stores and disposes lightbulbs. */\n safelyDisposesLightbulbs?: boolean | null;\n /** Safely disposes lightbulbs exception. */\n safelyDisposesLightbulbsException?: AmenityExceptionWithLiterals;\n /**\n * Safely handles hazardous substances. The property has a hazardous waste management program\n * aligned wit GreenSeal and LEED requirements, and meets all regulatory requirements for\n * hazardous waste disposal and recycling. Hazardous means substances that are classified as\n * \"hazardous\" by an authoritative body (such as OSHA or DOT), are labeled with signal words\n * such as \"Danger,\" \"Caution,\" \"Warning,\" or are flammable, corrosive, or ignitable.\n * Requirements include: - The property shall maintain records of the efforts it has made to\n * replace the hazardous substances it uses with less hazardous alternatives. - An inventory of\n * the hazardous materials stored on-site. - Products intended for cleaning, dishwashing,\n * laundry, and pool maintenance shall be stored in clearly labeled containers. These\n * containers shall be checked regularly for leaks, and replaced a necessary. - Spill\n * containment devices shall be installed to collect spills, drips, or leaching of chemicals.\n */\n safelyHandlesHazardousSubstances?: boolean | null;\n /** Safely handles hazardous substances exception. */\n safelyHandlesHazardousSubstancesException?: AmenityExceptionWithLiterals;\n /**\n * Soap donation program. The property participates in a soap donation program such as Clean\n * the World or something similar.\n */\n soapDonationProgram?: boolean | null;\n /** Soap donation program exception. */\n soapDonationProgramException?: AmenityExceptionWithLiterals;\n /**\n * Toiletry donation program. The property participates in a toiletry donation program such as\n * Clean the World or something similar.\n */\n toiletryDonationProgram?: boolean | null;\n /** Toiletry donation program exception. */\n toiletryDonationProgramException?: AmenityExceptionWithLiterals;\n /**\n * Water bottle filling stations. The property offers water stations throughout the building\n * for guest use.\n */\n waterBottleFillingStations?: boolean | null;\n /** Water bottle filling stations exception. */\n waterBottleFillingStationsException?: AmenityExceptionWithLiterals;\n}\n\n/** Water conservation practices implemented at the hotel. */\nexport interface WaterConservation {\n /**\n * Independent organization audits water use. The property conducts a water conservation audit\n * every 5 years, the results of which are either verified by a third-party and/or published in\n * external communications. A water conservation audit is a detailed assessment of the\n * facility, providing recommendations to existing operations and procedures to improve water\n * efficiency, available incentives or rebates, and opportunities for improvements through\n * renovations or upgrades. Examples of organizations who conduct credible third party audits\n * include: Engie Impact, and local utility providers (they often provide energy and water\n * audits).\n */\n independentOrganizationAuditsWaterUse?: boolean | null;\n /** Independent organization audits water use exception. */\n independentOrganizationAuditsWaterUseException?: AmenityExceptionWithLiterals;\n /** Linen reuse program. The property offers a linen reuse program. */\n linenReuseProgram?: boolean | null;\n /** Linen reuse program exception. */\n linenReuseProgramException?: AmenityExceptionWithLiterals;\n /** Towel reuse program. The property offers a towel reuse program. */\n towelReuseProgram?: boolean | null;\n /** Towel reuse program exception. */\n towelReuseProgramException?: AmenityExceptionWithLiterals;\n /**\n * Water saving showers. All of the property's guest rooms have shower heads that use no more\n * than 2.0 gallons per minute (gpm).\n */\n waterSavingShowers?: boolean | null;\n /** Water saving showers exception. */\n waterSavingShowersException?: AmenityExceptionWithLiterals;\n /**\n * Water saving sinks. All of the property's guest rooms have bathroom faucets that use a\n * maximum of 1.5 gallons per minute (gpm), public restroom faucets do not exceed 0.5 gpm, and\n * kitchen faucets (excluding faucets used exclusively for filling operations) do not exceed\n * 2.2 gpm.\n */\n waterSavingSinks?: boolean | null;\n /** Water saving sinks exception. */\n waterSavingSinksException?: AmenityExceptionWithLiterals;\n /** Water saving toilets. All of the property's toilets use 1.6 gallons per flush, or less. */\n waterSavingToilets?: boolean | null;\n /** Water saving toilets exception. */\n waterSavingToiletsException?: AmenityExceptionWithLiterals;\n}\n\n/**\n * Physical adaptations made to the property in consideration of varying levels of human physical\n * ability.\n */\nexport interface Accessibility {\n /**\n * Mobility accessible. Throughout the property there are physical adaptations to ease the stay\n * of a person in a wheelchair, such as auto-opening doors, wide elevators, wide bathrooms or\n * ramps.\n */\n mobilityAccessible?: boolean | null;\n /**\n * Mobility accessible elevator. A lift that transports people from one level to another and is\n * built to accommodate a wheelchair-using passenger owing to the width of its doors and\n * placement of call buttons.\n */\n mobilityAccessibleElevator?: boolean | null;\n /** Mobility accessible elevator exception. */\n mobilityAccessibleElevatorException?: AmenityExceptionWithLiterals;\n /** Mobility accessible exception. */\n mobilityAccessibleException?: AmenityExceptionWithLiterals;\n /**\n * Mobility accessible parking. The presence of a marked, designated area of prescribed size in\n * which only registered, labeled vehicles transporting a person with physical challenges may\n * park.\n */\n mobilityAccessibleParking?: boolean | null;\n /** Mobility accessible parking exception. */\n mobilityAccessibleParkingException?: AmenityExceptionWithLiterals;\n /**\n * Mobility accessible pool. A swimming pool equipped with a mechanical chair that can be\n * lowered and raised for the purpose of moving physically challenged guests into and out of\n * the pool. May be powered by electricity or water. Also known as pool lift.\n */\n mobilityAccessiblePool?: boolean | null;\n /** Mobility accessible pool exception. */\n mobilityAccessiblePoolException?: AmenityExceptionWithLiterals;\n}\n\n/** Amenities and features related to leisure and play. */\nexport interface Activities {\n /**\n * Beach access. The hotel property is in close proximity to a beach and offers a way to get to\n * that beach. This can include a route to the beach such as stairs down if hotel is on a\n * bluff, or a short trail. Not the same as beachfront (with beach access, the hotel's\n * proximity is close to but not right on the beach).\n */\n beachAccess?: boolean | null;\n /** Beach access exception. */\n beachAccessException?: AmenityExceptionWithLiterals;\n /**\n * Breach front. The hotel property is physically located on the beach alongside an ocean, sea,\n * gulf, or bay. It is not on a lake, river, stream, or pond. The hotel is not separated from\n * the beach by a public road allowing vehicular, pedestrian, or bicycle traffic.\n */\n beachFront?: boolean | null;\n /** Beach front exception. */\n beachFrontException?: AmenityExceptionWithLiterals;\n /**\n * Bicycle rental. The hotel owns bicycles that it permits guests to borrow and use. Can be\n * free or for a fee.\n */\n bicycleRental?: boolean | null;\n /** Bicycle rental exception. */\n bicycleRentalException?: AmenityExceptionWithLiterals;\n /**\n * Boutique stores. There are stores selling clothing, jewelry, art and decor either on hotel\n * premises or very close by. Does not refer to the hotel gift shop or convenience store.\n */\n boutiqueStores?: boolean | null;\n /** Boutique stores exception. */\n boutiqueStoresException?: AmenityExceptionWithLiterals;\n /**\n * Casino. A space designated for gambling and gaming featuring croupier-run table and card\n * games, as well as electronic slot machines. May be on hotel premises or located nearby.\n */\n casino?: boolean | null;\n /** Casino exception. */\n casinoException?: AmenityExceptionWithLiterals;\n /**\n * Free bicycle rental. The hotel owns bicycles that it permits guests to borrow and use for\n * free.\n */\n freeBicycleRental?: boolean | null;\n /** Free bicycle rental exception. */\n freeBicycleRentalException?: AmenityExceptionWithLiterals;\n /**\n * Free watercraft rental. The hotel owns watercraft that it permits guests to borrow and use\n * for free.\n */\n freeWatercraftRental?: boolean | null;\n /** Free Watercraft rental exception. */\n freeWatercraftRentalException?: AmenityExceptionWithLiterals;\n /**\n * Game room. There is a room at the hotel containing electronic machines for play such as\n * pinball, prize machines, driving simulators, and other items commonly found at a family fun\n * center or arcade. May also include non-electronic games like pool, foosball, darts, and\n * more. May or may not be designed for children. Also known as arcade, fun room, or family fun\n * center.\n */\n gameRoom?: boolean | null;\n /** Game room exception. */\n gameRoomException?: AmenityExceptionWithLiterals;\n /**\n * Golf. There is a golf course on hotel grounds or there is a nearby, independently run golf\n * course that allows use by hotel guests. Can be free or for a fee.\n */\n golf?: boolean | null;\n /** Golf exception. */\n golfException?: AmenityExceptionWithLiterals;\n /**\n * Horseback riding. The hotel has a horse barn onsite or an affiliation with a nearby barn to\n * allow for guests to sit astride a horse and direct it to walk, trot, cantor, gallop and/or\n * jump. Can be in a riding ring, on designated paths, or in the wilderness. May or may not\n * involve instruction.\n */\n horsebackRiding?: boolean | null;\n /** Horseback riding exception. */\n horsebackRidingException?: AmenityExceptionWithLiterals;\n /**\n * Nightclub. There is a room at the hotel with a bar, a dance floor, and seating where\n * designated staffers play dance music. There may also be a designated area for the\n * performance of live music, singing and comedy acts.\n */\n nightclub?: boolean | null;\n /** Nightclub exception. */\n nightclubException?: AmenityExceptionWithLiterals;\n /** Private beach. The beach which is in close proximity to the hotel is open only to guests. */\n privateBeach?: boolean | null;\n /** Private beach exception. */\n privateBeachException?: AmenityExceptionWithLiterals;\n /**\n * Scuba. The provision for guests to dive under naturally occurring water fitted with a self-\n * contained underwater breathing apparatus (SCUBA) for the purpose of exploring underwater\n * life. Apparatus consists of a tank providing oxygen to the diver through a mask. Requires\n * certification of the diver and supervision. The hotel may have the activity at its own\n * waterfront or have an affiliation with a nearby facility. Required equipment is most often\n * supplied to guests. Can be free or for a fee. Not snorkeling. Not done in a swimming pool.\n */\n scuba?: boolean | null;\n /** Scuba exception. */\n scubaException?: AmenityExceptionWithLiterals;\n /**\n * Snorkeling. The provision for guests to participate in a recreational water activity in\n * which swimmers wear a diving mask, a simple, shaped breathing tube and flippers/swim fins\n * for the purpose of exploring below the surface of an ocean, gulf or lake. Does not usually\n * require user certification or professional supervision. Equipment may or may not be\n * available for rent or purchase. Not scuba diving.\n */\n snorkeling?: boolean | null;\n /** Snorkeling exception. */\n snorkelingException?: AmenityExceptionWithLiterals;\n /**\n * Tennis. The hotel has the requisite court(s) on site or has an affiliation with a nearby\n * facility for the purpose of providing guests with the opportunity to play a two-sided court-\n * based game in which players use a stringed racquet to hit a ball across a net to the side of\n * the opposing player. The court can be indoors or outdoors. Instructors, racquets and balls\n * may or may not be provided.\n */\n tennis?: boolean | null;\n /** Tennis exception. */\n tennisException?: AmenityExceptionWithLiterals;\n /**\n * Water skiing. The provision of giving guests the opportunity to be pulled across naturally\n * occurring water while standing on skis and holding a tow rope attached to a motorboat. Can\n * occur on hotel premises or at a nearby waterfront. Most often performed in a lake or ocean.\n */\n waterSkiing?: boolean | null;\n /** Water skiing exception. */\n waterSkiingException?: AmenityExceptionWithLiterals;\n /**\n * Watercraft rental. The hotel owns water vessels that it permits guests to borrow and use.\n * Can be free or for a fee. Watercraft may include boats, pedal boats, rowboats, sailboats,\n * powerboats, canoes, kayaks, or personal watercraft (such as a Jet Ski).\n */\n watercraftRental?: boolean | null;\n /** Watercraft rental exception. */\n watercraftRentalException?: AmenityExceptionWithLiterals;\n}\n\n/** Features of the property of specific interest to the business traveler. */\nexport interface Business {\n /**\n * Business center. A designated room at the hotel with one or more desks and equipped with\n * guest-use computers, printers, fax machines and/or photocopiers. May or may not be open\n * 24/7. May or may not require a key to access. Not a meeting room or conference room.\n */\n businessCenter?: boolean | null;\n /** Business center exception. */\n businessCenterException?: AmenityExceptionWithLiterals;\n /**\n * Meeting rooms. Rooms at the hotel designated for business-related gatherings. Rooms are\n * usually equipped with tables or desks, office chairs and audio/visual facilities to allow\n * for presentations and conference calls. Also known as conference rooms.\n */\n meetingRooms?: boolean | null;\n /** Meeting rooms count. The number of meeting rooms at the property. */\n meetingRoomsCount?: number | null;\n /** Meeting rooms count exception. */\n meetingRoomsCountException?: AmenityExceptionWithLiterals;\n /** Meeting rooms exception. */\n meetingRoomsException?: AmenityExceptionWithLiterals;\n}\n\n/** The ways in which the property provides guests with the ability to access the internet. */\nexport interface Connectivity {\n /** Free wifi. The hotel offers guests wifi for free. */\n freeWifi?: boolean | null;\n /** Free wifi exception. */\n freeWifiException?: AmenityExceptionWithLiterals;\n /**\n * Public area wifi available. Guests have the ability to wirelessly connect to the internet in\n * the areas of the hotel accessible to anyone. Can be free or for a fee.\n */\n publicAreaWifiAvailable?: boolean | null;\n /** Public area wifi available exception. */\n publicAreaWifiAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Public internet terminal. An area of the hotel supplied with computers and designated for\n * the purpose of providing guests with the ability to access the internet.\n */\n publicInternetTerminal?: boolean | null;\n /** Public internet terminal exception. */\n publicInternetTerminalException?: AmenityExceptionWithLiterals;\n /**\n * Wifi available. The hotel provides the ability for guests to wirelessly connect to the\n * internet. Can be in the public areas of the hotel and/or in the guest rooms. Can be free or\n * for a fee.\n */\n wifiAvailable?: boolean | null;\n /** Wifi available exception. */\n wifiAvailableException?: AmenityExceptionWithLiterals;\n}\n\n/** Services and amenities for families and young guests. */\nexport interface Families {\n /**\n * Babysitting. Child care that is offered by hotel staffers or coordinated by hotel staffers\n * with local child care professionals. Can be free or for a fee.\n */\n babysitting?: boolean | null;\n /** Babysitting exception. */\n babysittingException?: AmenityExceptionWithLiterals;\n /**\n * Kids activities. Recreational options such as sports, films, crafts and games designed for\n * the enjoyment of children and offered at the hotel. May or may not be supervised. May or may\n * not be at a designated time or place. Cab be free or for a fee.\n */\n kidsActivities?: boolean | null;\n /** Kids activities exception. */\n kidsActivitiesException?: AmenityExceptionWithLiterals;\n /**\n * Kids club. An organized program of group activities held at the hotel and designed for the\n * enjoyment of children. Facilitated by hotel staff (or staff procured by the hotel) in an\n * area(s) designated for the purpose of entertaining children without their parents. May\n * include games, outings, water sports, team sports, arts and crafts, and films. Usually has\n * set hours. Can be free or for a fee. Also known as Kids Camp or Kids program.\n */\n kidsClub?: boolean | null;\n /** Kids club exception. */\n kidsClubException?: AmenityExceptionWithLiterals;\n /**\n * Kids friendly. The hotel has one or more special features for families with children, such\n * as reduced rates, child-sized beds, kids' club, babysitting service, or suitable place to\n * play on premises.\n */\n kidsFriendly?: boolean | null;\n /** Kids friendly exception. */\n kidsFriendlyException?: AmenityExceptionWithLiterals;\n}\n\n/** Meals, snacks, and beverages available at the property. */\nexport interface FoodAndDrink {\n /**\n * Bar. A designated room, lounge or area of an on-site restaurant with seating at a counter\n * behind which a hotel staffer takes the guest's order and provides the requested alcoholic\n * drink. Can be indoors or outdoors. Also known as Pub.\n */\n bar?: boolean | null;\n /** Bar exception. */\n barException?: AmenityExceptionWithLiterals;\n /** Breakfast available. The morning meal is offered to all guests. Can be free or for a fee. */\n breakfastAvailable?: boolean | null;\n /** Breakfast available exception. */\n breakfastAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Breakfast buffet. Breakfast meal service where guests serve themselves from a variety of\n * dishes/foods that are put out on a table.\n */\n breakfastBuffet?: boolean | null;\n /** Breakfast buffet exception. */\n breakfastBuffetException?: AmenityExceptionWithLiterals;\n /**\n * Buffet. A type of meal where guests serve themselves from a variety of dishes/foods that are\n * put out on a table. Includes lunch and/or dinner meals. A breakfast-only buffet is not\n * sufficient.\n */\n buffet?: boolean | null;\n /** Buffet exception. */\n buffetException?: AmenityExceptionWithLiterals;\n /**\n * Dinner buffet. Dinner meal service where guests serve themselves from a variety of\n * dishes/foods that are put out on a table.\n */\n dinnerBuffet?: boolean | null;\n /** Dinner buffet exception. */\n dinnerBuffetException?: AmenityExceptionWithLiterals;\n /**\n * Free breakfast. Breakfast is offered for free to all guests. Does not apply if limited to\n * certain room packages.\n */\n freeBreakfast?: boolean | null;\n /** Free breakfast exception. */\n freeBreakfastException?: AmenityExceptionWithLiterals;\n /**\n * Restaurant. A business onsite at the hotel that is open to the public as well as guests, and\n * offers meals and beverages to consume at tables or counters. May or may not include table\n * service. Also known as cafe, buffet, eatery. A \"breakfast room\" where the hotel serves\n * breakfast only to guests (not the general public) does not count as a restaurant.\n */\n restaurant?: boolean | null;\n /** Restaurant exception. */\n restaurantException?: AmenityExceptionWithLiterals;\n /** Restaurants count. The number of restaurants at the hotel. */\n restaurantsCount?: number | null;\n /** Restaurants count exception. */\n restaurantsCountException?: AmenityExceptionWithLiterals;\n /**\n * Room service. A hotel staffer delivers meals prepared onsite to a guest's room as per their\n * request. May or may not be available during specific hours. Services should be available to\n * all guests (not based on rate/room booked/reward program, etc).\n */\n roomService?: boolean | null;\n /** Room service exception. */\n roomServiceException?: AmenityExceptionWithLiterals;\n /**\n * Table service. A restaurant in which a staff member is assigned to a guest's table to take\n * their order, deliver and clear away food, and deliver the bill, if applicable. Also known as\n * sit-down restaurant.\n */\n tableService?: boolean | null;\n /** Table service exception. */\n tableServiceException?: AmenityExceptionWithLiterals;\n /** 24hr room service. Room service is available 24 hours a day. */\n twentyFourHourRoomService?: boolean | null;\n /** 24hr room service exception. */\n twentyFourHourRoomServiceException?: AmenityExceptionWithLiterals;\n /**\n * Vending machine. A glass-fronted mechanized cabinet displaying and dispensing snacks and\n * beverages for purchase by coins, paper money and/or credit cards.\n */\n vendingMachine?: boolean | null;\n /** Vending machine exception. */\n vendingMachineException?: AmenityExceptionWithLiterals;\n}\n\n/** A specific type of unit primarily defined by its features. */\nexport interface GuestUnitType {\n /**\n * Required. Unit or room code identifiers for a single GuestUnitType. Each code must be unique\n * within a Lodging instance.\n * @maxSize 100\n * @maxLength 255\n */\n codes?: string[];\n /** Features and available amenities of the GuestUnitType. */\n features?: GuestUnitFeatures;\n /**\n * Required. Short, English label or name of the GuestUnitType. Target <50 chars.\n * @maxLength 255\n */\n label?: string;\n}\n\n/** Health and safety measures implemented by the hotel during COVID-19. */\nexport interface HealthAndSafety {\n /** Enhanced cleaning measures implemented by the hotel during COVID-19. */\n enhancedCleaning?: EnhancedCleaning;\n /** Increased food safety measures implemented by the hotel during COVID-19. */\n increasedFoodSafety?: IncreasedFoodSafety;\n /** Minimized contact measures implemented by the hotel during COVID-19. */\n minimizedContact?: MinimizedContact;\n /** Personal protection measures implemented by the hotel during COVID-19. */\n personalProtection?: PersonalProtection;\n /** Physical distancing measures implemented by the hotel during COVID-19. */\n physicalDistancing?: PhysicalDistancing;\n}\n\n/** Conveniences provided in guest units to facilitate an easier, more comfortable stay. */\nexport interface Housekeeping {\n /** Daily housekeeping. Guest units are cleaned by hotel staff daily during guest's stay. */\n dailyHousekeeping?: boolean | null;\n /** Daily housekeeping exception. */\n dailyHousekeepingException?: AmenityExceptionWithLiterals;\n /**\n * Housekeeping available. Guest units are cleaned by hotel staff during guest's stay. Schedule\n * may vary from daily, weekly, or specific days of the week.\n */\n housekeepingAvailable?: boolean | null;\n /** Housekeeping available exception. */\n housekeepingAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Turndown service. Hotel staff enters guest units to prepare the bed for sleep use. May or\n * may not include some light housekeeping. May or may not include an evening snack or candy.\n * Also known as evening service.\n */\n turndownService?: boolean | null;\n /** Turndown service exception. */\n turndownServiceException?: AmenityExceptionWithLiterals;\n}\n\n/** Metadata for the Lodging. */\nexport interface LodgingMetadata {\n /**\n * Required. The latest time at which the Lodging data is asserted to be true in the real\n * world. This is not necessarily the time at which the request is made.\n */\n updateTime?: Date | null;\n}\n\n/** Parking options at the property. */\nexport interface Parking {\n /**\n * Electric car charging stations. Electric power stations, usually located outdoors, into\n * which guests plug their electric cars to receive a charge.\n */\n electricCarChargingStations?: boolean | null;\n /** Electric car charging stations exception. */\n electricCarChargingStationsException?: AmenityExceptionWithLiterals;\n /**\n * Free parking. The hotel allows the cars of guests to be parked for free. Parking facility\n * may be an outdoor lot or an indoor garage, but must be onsite. Nearby parking does not\n * apply. Parking may be performed by the guest or by hotel staff. Free parking must be\n * available to all guests (limited conditions does not apply).\n */\n freeParking?: boolean | null;\n /** Free parking exception. */\n freeParkingException?: AmenityExceptionWithLiterals;\n /**\n * Free self parking. Guests park their own cars for free. Parking facility may be an outdoor\n * lot or an indoor garage, but must be onsite. Nearby parking does not apply.\n */\n freeSelfParking?: boolean | null;\n /** Free self parking exception. */\n freeSelfParkingException?: AmenityExceptionWithLiterals;\n /**\n * Free valet parking. Hotel staff member parks the cars of guests. Parking with this service\n * is free.\n */\n freeValetParking?: boolean | null;\n /** Free valet parking exception. */\n freeValetParkingException?: AmenityExceptionWithLiterals;\n /**\n * Parking available. The hotel allows the cars of guests to be parked. Can be free or for a\n * fee. Parking facility may be an outdoor lot or an indoor garage, but must be onsite. Nearby\n * parking does not apply. Parking may be performed by the guest or by hotel staff.\n */\n parkingAvailable?: boolean | null;\n /** Parking available exception. */\n parkingAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Self parking available. Guests park their own cars. Parking facility may be an outdoor lot\n * or an indoor garage, but must be onsite. Nearby parking does not apply. Can be free or for a\n * fee.\n */\n selfParkingAvailable?: boolean | null;\n /** Self parking available exception. */\n selfParkingAvailableException?: AmenityExceptionWithLiterals;\n /**\n * Valet parking available. Hotel staff member parks the cars of guests. Parking with this\n * service can be free or for a fee.\n */\n valetParkingAvailable?: boolean | null;\n /** Valet parking available exception. */\n valetParkingAvailableException?: AmenityExceptionWithLiterals;\n}\n\n/** Policies regarding guest-owned animals. */\nexport interface Pets {\n /**\n * Cats allowed. Domesticated felines are permitted at the property and allowed to stay in the\n * guest room of their owner. May or may not require a fee.\n */\n catsAllowed?: boolean | null;\n /** Cats allowed exception. */\n catsAllowedException?: AmenityExceptionWithLiterals;\n /**\n * Dogs allowed. Domesticated canines are permitted at the property and allowed to stay in the\n * guest room of their owner. May or may not require a fee.\n */\n dogsAllowed?: boolean | null;\n /** Dogs allowed exception. */\n dogsAllowedException?: AmenityExceptionWithLiterals;\n /**\n * Pets allowed. Household animals are allowed at the property and in the specific guest room\n * of their owner. May or may not include dogs, cats, reptiles and/or fish. May or may not\n * require a fee. Service animals are not considered to be pets, so not governed by this\n * policy.\n */\n petsAllowed?: boolean | null;\n /** Pets allowed exception. */\n petsAllowedException?: AmenityExceptionWithLiterals;\n /**\n * Pets allowed free. Household animals are allowed at the property and in the specific guest\n * room of their owner for free. May or may not include dogs, cats, reptiles, and/or fish.\n */\n petsAllowedFree?: boolean | null;\n /** Pets allowed free exception. */\n petsAllowedFreeException?: AmenityExceptionWithLiterals;\n}\n\n/** Property rules that impact guests. */\nexport interface Policies {\n /**\n * All inclusive available. The hotel offers a rate option that includes the cost of the room,\n * meals, activities, and other amenities that might otherwise be charged separately.\n */\n allInclusiveAvailable?: boolean | null;\n /** All inclusive available exception. */\n allInclusiveAvailableException?: AmenityExceptionWithLiterals;\n /**\n * All inclusive only. The only rate option offered by the hotel is a rate that includes the\n * cost of the room, meals, activities and other amenities that might otherwise be charged\n * separately.\n */\n allInclusiveOnly?: boolean | null;\n /** All inclusive only exception. */\n allInclusiveOnlyException?: AmenityExceptionWithLiterals;\n /**\n * Check-in time. The time of the day at which the hotel begins providing guests access to\n * their unit at the beginning of their stay.\n */\n checkinTime?: LodgingTimeOfDay;\n /** Check-in time exception. */\n checkinTimeException?: AmenityExceptionWithLiterals;\n /**\n * Check-out time. The time of the day on the last day of a guest's reserved stay at which the\n * guest must vacate their room and settle their bill. Some hotels may offer late or early\n * check out for a fee.\n */\n checkoutTime?: LodgingTimeOfDay;\n /** Check-out time exception. */\n checkoutTimeException?: AmenityExceptionWithLiterals;\n /**\n * Kids stay free. The children of guests are allowed to stay in the room/suite of a parent or\n * adult without an additional fee. The policy may or may not stipulate a limit of the child's\n * age or the overall number of children allowed.\n */\n kidsStayFree?: boolean | null;\n /** Kids stay free exception. */\n kidsStayFreeException?: AmenityExceptionWithLiterals;\n /**\n * Max child age. The hotel allows children up to a certain age to stay in the room/suite of a\n * parent or adult without an additional fee.\n */\n maxChildAge?: number | null;\n /** Max child age exception. */\n maxChildAgeException?: AmenityExceptionWithLiterals;\n /**\n * Max kids stay free count. The hotel allows a specific, defined number of children to stay in\n * the room/suite of a parent or adult without an additional fee.\n */\n maxKidsStayFreeCount?: number | null;\n /** Max kids stay free count exception. */\n maxKidsStayFreeCountException?: AmenityExceptionWithLiterals;\n /** Forms of payment accepted at the property. */\n paymentOptions?: PaymentOptions;\n /**\n * Smoke free property. Smoking is not allowed inside the building, on balconies, or in outside\n * spaces. Hotels that offer a designated area for guests to smoke are not considered smoke-\n * free properties.\n */\n smokeFreeProperty?: boolean | null;\n /** Smoke free property exception. */\n smokeFreePropertyException?: AmenityExceptionWithLiterals;\n}\n\n/** Swimming pool or recreational water facilities available at the hotel. */\nexport interface Pools {\n /** Adult pool. A pool restricted for use by adults only. Can be indoors or outdoors. */\n adultPool?: boolean | null;\n /** Adult pool exception. */\n adultPoolException?: AmenityExceptionWithLiterals;\n /**\n * Hot tub. A man-made pool containing bubbling water maintained at a higher temperature and\n * circulated by aerating jets for the purpose of soaking, relaxation and hydrotherapy. Can be\n * indoors or outdoors. Not used for active swimming. Also known as Jacuzzi. Hot tub must be in\n * a common area where all guests can access it. Does not apply to room-specific hot tubs that\n * are only accessible to guest occupying that room.\n */\n hotTub?: boolean | null;\n /** Hot tub exception. */\n hotTubException?: AmenityExceptionWithLiterals;\n /**\n * Indoor pool. A pool located inside the hotel and available for guests to use for swimming\n * and/or soaking. Use may or may not be restricted to adults and/or children.\n */\n indoorPool?: boolean | null;\n /** Indoor pool exception. */\n indoorPoolException?: AmenityExceptionWithLiterals;\n /** Indoor pools count. The sum of all indoor pools at the hotel. */\n indoorPoolsCount?: number | null;\n /** Indoor pools count exception. */\n indoorPoolsCountException?: AmenityExceptionWithLiterals;\n /**\n * Lazy river. A man-made pool or several interconnected recreational pools built to mimic the\n * shape and current of a winding river where guests float in the water on inflated rubber\n * tubes. Can be indoors or outdoors.\n */\n lazyRiver?: boolean | null;\n /** Lazy river exception. */\n lazyRiverException?: AmenityExceptionWithLiterals;\n /**\n * Lifeguard. A trained member of the hotel staff stationed by the hotel's indoor or outdoor\n * swimming area and responsible for the safety of swimming guests.\n */\n lifeguard?: boolean | null;\n /** Lifeguard exception. */\n lifeguardException?: AmenityExceptionWithLiterals;\n /**\n * Outdoor pool. A pool located outside on the grounds of the hotel and available for guests to\n * use for swimming, soaking or recreation. Use may or may not be restricted to adults and/or\n * children.\n */\n outdoorPool?: boolean | null;\n /** Outdoor pool exception. */\n outdoorPoolException?: AmenityExceptionWithLiterals;\n /** Outdoor pools count. The sum of all outdoor pools at the hotel. */\n outdoorPoolsCount?: number | null;\n /** Outdoor pools count exception. */\n outdoorPoolsCountException?: AmenityExceptionWithLiterals;\n /**\n * Pool. The presence of a pool, either indoors or outdoors, for guests to use for swimming\n * and/or soaking. Use may or may not be restricted to adults and/or children.\n */\n pool?: boolean | null;\n /** Pool exception. */\n poolException?: AmenityExceptionWithLiterals;\n /** Pools count. The sum of all pools at the hotel. */\n poolsCount?: number | null;\n /** Pools count exception. */\n poolsCountException?: AmenityExceptionWithLiterals;\n /**\n * Wading pool. A shallow pool designed for small children to play in. Can be indoors or\n * outdoors. Also known as kiddie pool.\n */\n wadingPool?: boolean | null;\n /** Wading pool exception. */\n wadingPoolException?: AmenityExceptionWithLiterals;\n /**\n * Water park. An aquatic recreation area with a large pool or series of pools that has\n * features such as a water slide or tube, wavepool, fountains, rope swings, and/or obstacle\n * course. Can be indoors or outdoors. Also known as adventure pool.\n */\n waterPark?: boolean | null;\n /** Water park exception. */\n waterParkException?: AmenityExceptionWithLiterals;\n /**\n * Waterslide. A continuously wetted chute positioned by an indoor or outdoor pool which people\n * slide down into the water.\n */\n waterslide?: boolean | null;\n /** Waterslide exception. */\n waterslideException?: AmenityExceptionWithLiterals;\n /**\n * Wave pool. A large indoor or outdoor pool with a machine that produces water currents to\n * mimic the ocean's crests.\n */\n wavePool?: boolean | null;\n /** Wave pool exception. */\n wavePoolException?: AmenityExceptionWithLiterals;\n}\n\n/** General factual information about the property's physical structure and important dates. */\nexport interface Property {\n /** Built year. The year that construction of the property was completed. */\n builtYear?: number | null;\n /** Built year exception. */\n builtYearException?: AmenityExceptionWithLiterals;\n /**\n * Floors count. The number of stories the building has from the ground floor to the top floor\n * that are accessible to guests.\n */\n floorsCount?: number | null;\n /** Floors count exception. */\n floorsCountException?: AmenityExceptionWithLiterals;\n /**\n * Last renovated year. The year when the most recent renovation of the property was completed.\n * Renovation may include all or any combination of the following: the units, the public\n * spaces, the exterior, or the interior.\n */\n lastRenovatedYear?: number | null;\n /** Last renovated year exception. */\n lastRenovatedYearException?: AmenityExceptionWithLiterals;\n /**\n * Rooms count. The total number of rooms and suites bookable by guests for an overnight stay.\n * Does not include event space, public spaces, conference rooms, fitness rooms, business\n * centers, spa, salon, restaurants/bars, or shops.\n */\n roomsCount?: number | null;\n /** Rooms count exception. */\n roomsCountException?: AmenityExceptionWithLiterals;\n}\n\n/** Conveniences or help provided by the property to facilitate an easier, more comfortable stay. */\nexport interface Services {\n /**\n * Baggage storage. A provision for guests to leave their bags at the hotel when they arrive\n * for their stay before the official check-in time. May or may not apply for guests who wish\n * to leave their bags after check-out and before departing the locale. Also known as bag\n * dropoff.\n */\n baggageStorage?: boolean | null;\n /** Baggage storage exception. */\n baggageStorageException?: AmenityExceptionWithLiterals;\n /**\n * Concierge. Hotel staff member(s) responsible for facilitating an easy, comfortable stay\n * through making reservations for meals, sourcing theater tickets, arranging tours, finding a\n * doctor, making recommendations, and answering questions.\n */\n concierge?: boolean | null;\n /** Concierge exception. */\n conciergeException?: AmenityExceptionWithLiterals;\n /**\n * Convenience store. A shop at the hotel primarily selling snacks, drinks, non-prescription\n * medicines, health and beauty aids, magazines and newspapers.\n */\n convenienceStore?: boolean | null;\n /** Convenience store exception. */\n convenienceStoreException?: AmenityExceptionWithLiterals;\n /**\n * Currency exchange. A staff member or automated machine tasked with the transaction of\n * providing the native currency of the hotel's locale in exchange for the foreign currency\n * provided by a guest.\n */\n currencyExchange?: boolean | null;\n /** Currency exchange exception. */\n currencyExchangeException?: AmenityExceptionWithLiterals;\n /**\n * Elevator. A passenger elevator that transports guests from one story to another. Also known\n * as lift.\n */\n elevator?: boolean | null;\n /** Elevator exception. */\n elevatorException?: AmenityExceptionWithLiterals;\n /**\n * Front desk. A counter or desk in the lobby or the immediate interior of the hotel where a\n * member of the staff greets guests and processes the information related to their stay\n * (including check-in and check-out). May or may not be manned and open 24/7.\n */\n frontDesk?: boolean | null;\n /** Front desk exception. */\n frontDeskException?: AmenityExceptionWithLiterals;\n /**\n * Full service laundry. Laundry and dry cleaning facilitated and handled by the hotel on\n * behalf of the guest. Does not include the provision for guests to do their own laundry in\n * on-site machines.\n */\n fullServiceLaundry?: boolean | null;\n /** Full service laundry exception. */\n fullServiceLaundryException?: AmenityExceptionWithLiterals;\n /**\n * Gift shop. An on-site store primarily selling souvenirs, mementos and other gift items. May\n * or may not also sell sundries, magazines and newspapers, clothing, or snacks.\n */\n giftShop?: boolean | null;\n /** Gift shop exception. */\n giftShopException?: AmenityExceptionWithLiterals;\n /**\n * Languages spoken by at least one staff member.\n * @maxSize 50\n */\n languagesSpoken?: LanguageSpoken[];\n /**\n * Self service laundry. On-site clothes washers and dryers accessible to guests for the\n * purpose of washing and drying their own clothes. May or may not require payment to use the\n * machines.\n */\n selfServiceLaundry?: boolean | null;\n /** Self service laundry exception. */\n selfServiceLaundryException?: AmenityExceptionWithLiterals;\n /**\n * Social hour. A reception with complimentary soft drinks, tea, coffee, wine and/or cocktails\n * in the afternoon or evening. Can be hosted by hotel staff or guests may serve themselves.\n * Also known as wine hour. The availability of coffee/tea in the lobby throughout the day does\n * not constitute a social or wine hour.\n */\n socialHour?: boolean | null;\n /** Social hour exception. */\n socialHourException?: AmenityExceptionWithLiterals;\n /** 24hr front desk. Front desk is staffed 24 hours a day. */\n twentyFourHourFrontDesk?: boolean | null;\n /** 24hr front desk exception. */\n twentyFourHourFrontDeskException?: AmenityExceptionWithLiterals;\n /**\n * Wake up calls. By direction of the guest, a hotel staff member will phone the guest unit at\n * the requested hour. Also known as morning call.\n */\n wakeUpCalls?: boolean | null;\n /** Wake up calls exception. */\n wakeUpCallsException?: AmenityExceptionWithLiterals;\n}\n\n/** Sustainability practices implemented at the hotel. */\nexport interface Sustainability {\n /** Energy efficiency practices implemented at the hotel. */\n energyEfficiency?: EnergyEfficiency;\n /**\n * Sustainability certifications the hotel has been awarded. Deprecated: this field is no\n * longer populated. All certification data is now provided by BeCause.\n */\n sustainabilityCertifications?: SustainabilityCertifications;\n /** Sustainable sourcing practices implemented at the hotel. */\n sustainableSourcing?: SustainableSourcing;\n /** Waste reduction practices implemented at the hotel. */\n wasteReduction?: WasteReduction;\n /** Water conservation practices implemented at the hotel. */\n waterConservation?: WaterConservation;\n}\n\n/** Vehicles or vehicular services facilitated or owned by the property. */\nexport interface Transportation {\n /**\n * Airport shuttle. The hotel provides guests with a chauffeured van or bus to and from the\n * airport. Can be free or for a fee. Guests may share the vehicle with other guests unknown to\n * them. Applies if the hotel has a third-party shuttle service (office/desk etc.) within the\n * hotel. As long as hotel provides this service, it doesn't matter if it's directly with them\n * or a third party they work with. Does not apply if guest has to coordinate with an entity\n * outside/other than the hotel.\n */\n airportShuttle?: boolean | null;\n /** Airport shuttle exception. */\n airportShuttleException?: AmenityExceptionWithLiterals;\n /**\n * Car rental on property. A branch of a rental car company with a processing desk in the\n * hotel. Available cars for rent may be awaiting at the hotel or in a nearby lot.\n */\n carRentalOnProperty?: boolean | null;\n /** Car rental on property exception. */\n carRentalOnPropertyException?: AmenityExceptionWithLiterals;\n /**\n * Free airport shuttle. Airport shuttle is free to guests. Must be free to all guests without\n * any conditions.\n */\n freeAirportShuttle?: boolean | null;\n /** Free airport shuttle exception. */\n freeAirportShuttleException?: AmenityExceptionWithLiterals;\n /** Free private car service. Private chauffeured car service is free to guests. */\n freePrivateCarService?: boolean | null;\n /** Free private car service exception. */\n freePrivateCarServiceException?: AmenityExceptionWithLiterals;\n /**\n * Local shuttle. A car, van or bus provided by the hotel to transport guests to destinations\n * within a specified range of distance around the hotel. Usually shopping and/or convention\n * centers, downtown districts, or beaches. Can be free or for a fee.\n */\n localShuttle?: boolean | null;\n /** Local shuttle exception. */\n localShuttleException?: AmenityExceptionWithLiterals;\n /**\n * Private car service. Hotel provides a private chauffeured car to transport guests to\n * destinations. Passengers in the car are either alone or are known to one another and have\n * requested the car together. Service can be free or for a fee and travel distance is usually\n * limited to a specific range. Not a taxi.\n */\n privateCarService?: boolean | null;\n /** Private car service exception. */\n privateCarServiceException?: AmenityExceptionWithLiterals;\n /**\n * Transfer. Hotel provides a shuttle service or car service to take guests to and from the\n * nearest airport or train station. Can be free or for a fee. Guests may share the vehicle\n * with other guests unknown to them.\n */\n transfer?: boolean | null;\n /** Transfer exception. */\n transferException?: AmenityExceptionWithLiterals;\n}\n\n/** Guest facilities at the property to promote or maintain health, beauty, and fitness. */\nexport interface Wellness {\n /**\n * Doctor on call. The hotel has a contract with a medical professional who provides services\n * to hotel guests should they fall ill during their stay. The doctor may or may not have an\n * on-site office or be at the hotel at all times.\n */\n doctorOnCall?: boolean | null;\n /** Doctor on call exception. */\n doctorOnCallException?: AmenityExceptionWithLiterals;\n /**\n * Elliptical machine. An electric, stationary fitness machine with pedals that simulates\n * climbing, walking or running and provides a user-controlled range of speeds and tensions.\n * May not have arm-controlled levers to work out the upper body as well. Commonly found in a\n * gym, fitness room, health center, or health club.\n */\n ellipticalMachine?: boolean | null;\n /** Elliptical machine exception. */\n ellipticalMachineException?: AmenityExceptionWithLiterals;\n /**\n * Fitness center. A room or building at the hotel containing equipment to promote physical\n * activity, such as treadmills, elliptical machines, stationary bikes, weight machines, free\n * weights, and/or stretching mats. Use of the fitness center can be free or for a fee. May or\n * may not be staffed. May or may not offer instructor-led classes in various styles of\n * physical conditioning. May or may not be open 24/7. May or may not include locker rooms and\n * showers. Also known as health club, gym, fitness room, health center.\n */\n fitnessCenter?: boolean | null;\n /** Fitness center exception. */\n fitnessCenterException?: AmenityExceptionWithLiterals;\n /** Free fitness center. Guests may use the fitness center for free. */\n freeFitnessCenter?: boolean | null;\n /** Free fitness center exception. */\n freeFitnessCenterException?: AmenityExceptionWithLiterals;\n /**\n * Free weights. Individual handheld fitness equipment of varied weights used for upper body\n * strength training or bodybuilding. Also known as barbells, dumbbells, or kettlebells. Often\n * stored on a rack with the weights arranged from light to heavy. Commonly found in a gym,\n * fitness room, health center, or health club.\n */\n freeWeights?: boolean | null;\n /** Free weights exception. */\n freeWeightsException?: AmenityExceptionWithLiterals;\n /**\n * Massage. A service provided by a trained massage therapist involving the physical\n * manipulation of a guest's muscles in order to achieve relaxation or pain relief.\n */\n massage?: boolean | null;\n /** Massage exception. */\n massageException?: AmenityExceptionWithLiterals;\n /**\n * Salon. A room at the hotel where professionals provide hair styling services such as\n * shampooing, blow drying, hair dos, hair cutting and hair coloring. Also known as hairdresser\n * or beauty salon.\n */\n salon?: boolean | null;\n /** Salon exception. */\n salonException?: AmenityExceptionWithLiterals;\n /**\n * Sauna. A wood-paneled room heated to a high temperature where guests sit on built-in wood\n * benches for the purpose of perspiring and relaxing their muscles. Can be dry or slightly wet\n * heat. Not a steam room.\n */\n sauna?: boolean | null;\n /** Sauna exception. */\n saunaException?: AmenityExceptionWithLiterals;\n /**\n * Spa. A designated area, room or building at the hotel offering health and beauty treatment\n * through such means as steam baths, exercise equipment, and massage. May also offer facials,\n * nail care, and hair care. Services are usually available by appointment and for an\n * additional fee. Does not apply if hotel only offers a steam room; must offer other beauty\n * and/or health treatments as well.\n */\n spa?: boolean | null;\n /** Spa exception. */\n spaException?: AmenityExceptionWithLiterals;\n /**\n * Treadmill. An electric stationary fitness machine that simulates a moving path to promote\n * walking or running within a range of user-controlled speeds and inclines. Also known as\n * running machine. Commonly found in a gym, fitness room, health center, or health club.\n */\n treadmill?: boolean | null;\n /** Treadmill exception. */\n treadmillException?: AmenityExceptionWithLiterals;\n /**\n * Weight machine. Non-electronic fitness equipment designed for the user to target the\n * exertion of different muscles. Usually incorporates a padded seat, a stack of flat weights\n * and various bars and pulleys. May be designed for toning a specific part of the body or may\n * involve different user-controlled settings, hardware and pulleys so as to provide an overall\n * workout in one machine. Commonly found in a gym, fitness center, fitness room, or health\n * club.\n */\n weightMachine?: boolean | null;\n /** Weight machine exception. */\n weightMachineException?: AmenityExceptionWithLiterals;\n}\n\nexport interface UpdateLocationLodgingRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * The hotel data to set. Only the fields named in `fieldMask` are read, so this\n * can be as sparse as the change you're making.\n */\n lodging: Lodging;\n /**\n * Which fields to update. Nested paths are allowed (`families.kidsClub`); paths\n * into a repeated field are not (`guestUnits` yes, `guestUnits.codes` no), and\n * neither are read-only fields (`metadata`, `allUnits`, `someUnits`).\n *\n * At least one path is required. An empty mask is rejected as\n * `INVALID_UPDATE_MASK` rather than sent on as an empty update.\n */\n fieldMask: string[];\n}\n\nexport interface UpdateLocationLodgingResponse {\n /** The location's hotel data after the update, as Google returned it. */\n lodging?: Lodging;\n}\n\nexport interface ListAttributeMetadataRequest\n extends ListAttributeMetadataRequestLookupOneOf {\n /**\n * ID of the location. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId?: string;\n /**\n * A Google category + country pair, for previewing attributes before a\n * location exists.\n */\n categoryRegion?: CategoryRegion;\n /**\n * BCP-47 language code for localized display names. If unset, Google falls\n * back to English. Optional.\n * @maxLength 35\n */\n languageCode?: string;\n /**\n * Cursor-based paging. `limit` maps to Google's page size (unset uses a\n * server default of 200, min 1); `cursor` is the `next` token returned by a\n * previous response (an opaque Google page token).\n */\n paging?: CursorPaging;\n}\n\n/** @oneof */\nexport interface ListAttributeMetadataRequestLookupOneOf {\n /**\n * ID of the location. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId?: string;\n /**\n * A Google category + country pair, for previewing attributes before a\n * location exists.\n */\n categoryRegion?: CategoryRegion;\n}\n\n/**\n * A Google primary category + country pair to look up available attributes\n * when no location exists yet (e.g. while creating a location).\n */\nexport interface CategoryRegion {\n /**\n * Google category stable id, without the \"categories/\" prefix\n * (e.g. \"gcid:restaurant\").\n * @minLength 1\n * @maxLength 255\n */\n categoryId?: string;\n /**\n * ISO 3166-1 alpha-2 country code (e.g. \"US\") to look up available\n * attributes for.\n * @format COUNTRY\n */\n regionCode?: string;\n}\n\nexport interface ListAttributeMetadataResponse {\n /** Attribute definitions available for this page. */\n attributeMetadata?: AttributeMetadata[];\n /**\n * Paging metadata. `cursors.next` is the token to specify for the next page, and\n * `hasNext` says whether there is one.\n */\n pagingMetadata?: CursorPagingMetadata;\n}\n\n/** Metadata describing a single attribute definition available for a listing. */\nexport interface AttributeMetadata {\n /**\n * Attribute key, such as `has_wifi`, without the `attributes/` prefix. Pass it\n * as `attributeId` when writing values with Update Location Attributes.\n * @maxLength 255\n */\n attributeId?: string;\n /** The value type callers should provide for this attribute. */\n valueType?: AttributeValueTypeWithLiterals;\n /**\n * Localized display name for the attribute, or English if unavailable.\n * @maxLength 255\n */\n displayName?: string;\n /**\n * Localized display name of the group this attribute belongs to. Related\n * attributes share a group and should be displayed together.\n * @maxLength 255\n */\n groupDisplayName?: string;\n /** If true, the attribute supports multiple values. */\n repeatable?: boolean;\n /**\n * For enum-typed attributes, the supported values and their display names.\n * @maxSize 200\n */\n valueMetadata?: AttributeValueMetadata[];\n /** If true, the attribute is deprecated and should no longer be used. */\n deprecated?: boolean;\n}\n\n/** The kind of value an attribute takes. */\nexport enum AttributeValueType {\n /** A true/false attribute. */\n BOOL = 'BOOL',\n /** An attribute with a fixed set of single-select values. */\n ENUM = 'ENUM',\n /** A URL-valued attribute. */\n URL = 'URL',\n /**\n * An attribute with a fixed set of multi-select values. Matches Google's\n * AttributeValueType token spelling (\"REPEATED_ENUM\") so the value-type\n * mapping is a direct name lookup.\n */\n REPEATED_ENUM = 'REPEATED_ENUM',\n}\n\n/** @enumType */\nexport type AttributeValueTypeWithLiterals =\n | AttributeValueType\n | 'BOOL'\n | 'ENUM'\n | 'URL'\n | 'REPEATED_ENUM';\n\n/** A single supported value for an attribute, with its display name. */\nexport interface AttributeValueMetadata\n extends AttributeValueMetadataValueOneOf {\n /**\n * String/enum value token.\n * @maxLength 255\n */\n stringValue?: string;\n /** Boolean value. */\n boolValue?: boolean;\n /** Numeric value. */\n numberValue?: number;\n /**\n * Localized display name for this value, or English if unavailable (e.g.\n * \"Paid\" for a Wi-Fi attribute).\n * @maxLength 255\n */\n displayName?: string;\n}\n\n/** @oneof */\nexport interface AttributeValueMetadataValueOneOf {\n /**\n * String/enum value token.\n * @maxLength 255\n */\n stringValue?: string;\n /** Boolean value. */\n boolValue?: boolean;\n /** Numeric value. */\n numberValue?: number;\n}\n\nexport interface ListCategoriesRequest {\n /**\n * ISO 3166-1 alpha-2 country code (e.g. \"US\") the catalog is scoped to.\n * Categories differ per country, so this is required.\n * @format COUNTRY\n */\n regionCode: string;\n /**\n * Language to return the category display names in, as a BCP-47 code such as\n * `he` or `fr`. Required.\n * @minLength 1\n * @maxLength 35\n */\n languageCode: string;\n /**\n * Term to match against the category display name. Pass a plain term rather\n * than a query expression. Leave it out to page through the whole catalog.\n * @maxLength 255\n */\n searchTerm?: string;\n /** How much of each category to return. Unset behaves as BASIC. */\n view?: CategoryViewWithLiterals;\n /**\n * Cursor-based paging. `limit` maps to Google's page size (unset uses a\n * server default of 100, min 1, max 100); `cursor` is the `next` token\n * returned by a previous response (an opaque Google page token).\n */\n paging?: CursorPaging;\n /**\n * Optional. Whose Google credentials to read the catalog with. This isn't a\n * filter: the catalog is the same for everyone, so it doesn't change which\n * categories come back.\n *\n * Send it when you already have a location, so the read counts against that\n * site owner's own Google quota. Leave it out before any location exists, for\n * example in a create-location flow.\n * @maxLength 255\n */\n locationId?: string;\n}\n\n/**\n * How much of each category ListCategories returns. Mirrors Google's\n * CategoryView.\n */\nexport enum CategoryView {\n /** Id and display name only. The default, and all a category picker needs. */\n BASIC = 'BASIC',\n /** Adds the service types and more-hours types available for the category. */\n FULL = 'FULL',\n}\n\n/** @enumType */\nexport type CategoryViewWithLiterals = CategoryView | 'BASIC' | 'FULL';\n\nexport interface ListCategoriesResponse {\n /** Categories on this page, ordered as Google returned them. */\n categories?: CategoryMetadata[];\n /**\n * Paging metadata. `cursors.next` is the token to specify for the next page, and\n * `hasNext` says whether there is one.\n */\n pagingMetadata?: CursorPagingMetadata;\n}\n\n/**\n * A category from Google's global catalog, as returned by ListCategories.\n * Distinct from Category (the write-side type on a location) because these\n * extra fields are catalog-only reference data and are never sent to Google.\n */\nexport interface CategoryMetadata {\n /**\n * Google category resource name, e.g. \"categories/gcid:restaurant\". Assign\n * as-is to Category.id when creating or updating a location.\n * @maxLength 200\n */\n _id?: string;\n /**\n * Display name in the requested language, or English if unavailable.\n * @maxLength 200\n */\n displayName?: string;\n /**\n * Service types offered by this category. Populated only when view = FULL.\n * @maxSize 200\n */\n serviceTypes?: ServiceType[];\n /**\n * Additional hours types this category supports (e.g. \"delivery\",\n * \"drive_through\"). Populated only when view = FULL.\n * @maxSize 200\n */\n moreHoursTypes?: MoreHoursType[];\n}\n\n/** A service a category's businesses can offer, e.g. \"Haircut\". */\nexport interface ServiceType {\n /**\n * Google's stable id for the service type.\n * @maxLength 255\n */\n serviceTypeId?: string;\n /**\n * Display name in the requested language, or English if unavailable.\n * @maxLength 255\n */\n displayName?: string;\n}\n\n/**\n * A type of additional opening hours a category supports, beyond the regular\n * business hours (e.g. \"drive_through\", \"senior_hours\").\n */\nexport interface MoreHoursType {\n /**\n * Google's stable id for the hours type.\n * @maxLength 255\n */\n hoursTypeId?: string;\n /**\n * English display name, singular (\"Drive through\").\n * @maxLength 255\n */\n displayName?: string;\n /**\n * Display name in the requested language, plural where the language\n * distinguishes it. Falls back to English when unavailable.\n * @maxLength 255\n */\n localizedDisplayName?: string;\n}\n\nexport interface GetVerificationOptionsRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface GetVerificationOptionsResponse {\n /** Verification methods available for this location. */\n options?: VerificationOption[];\n}\n\n/**\n * Verification method options returned from Google for a location.\n * Used as part of the GetVerificationOptions response.\n */\nexport interface VerificationOption {\n /** The verification method. */\n method?: VerificationMethodWithLiterals;\n /**\n * For PHONE or EMAIL methods: the phone number / email address to\n * which Google will send the PIN.\n * @maxLength 255\n */\n displayData?: string;\n}\n\n/** Verification methods supported by Google for a Business Profile location. */\nexport enum VerificationMethod {\n /** Postcard to the business address */\n ADDRESS = 'ADDRESS',\n /** Email with a PIN */\n EMAIL = 'EMAIL',\n /** Automated phone call with a PIN */\n PHONE_CALL = 'PHONE_CALL',\n /** SMS with a PIN */\n SMS = 'SMS',\n /** Google-side instant verification (e.g. domain ownership) */\n AUTO = 'AUTO',\n}\n\n/** @enumType */\nexport type VerificationMethodWithLiterals =\n | VerificationMethod\n | 'ADDRESS'\n | 'EMAIL'\n | 'PHONE_CALL'\n | 'SMS'\n | 'AUTO';\n\nexport interface StartVerificationRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /** Verification method chosen by the merchant. */\n method: VerificationMethodWithLiterals;\n /**\n * Input the chosen method needs, such as the email address for email\n * verification, or the phone number for a call or SMS.\n * @maxLength 255\n */\n methodInput?: string;\n}\n\nexport interface StartVerificationResponse {\n /**\n * Opaque ID for this verification.\n *\n * For a PIN-based method, pass this back to Complete Verification.\n *\n * It's also set for automatic verification, which has no PIN and no Complete\n * Verification step. So its presence doesn't tell you whether there's more to\n * do: branch on `verificationState` instead, where `VERIFIED` means the flow\n * is already finished.\n * @maxLength 255\n */\n pendingVerificationId?: string;\n /** Verification state after starting the process. */\n verificationState?: VerificationStateWithLiterals;\n}\n\n/** Verification state of a Business Profile location. */\nexport enum VerificationState {\n UNVERIFIED = 'UNVERIFIED',\n PENDING_VERIFICATION = 'PENDING_VERIFICATION',\n VERIFIED = 'VERIFIED',\n}\n\n/** @enumType */\nexport type VerificationStateWithLiterals =\n | VerificationState\n | 'UNVERIFIED'\n | 'PENDING_VERIFICATION'\n | 'VERIFIED';\n\nexport interface CompleteVerificationRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * The PIN the site owner received by the method they chose.\n * @minLength 4\n * @maxLength 8\n */\n pin: string;\n /**\n * The `pendingVerificationId` that Start Verification returned for this\n * verification. Store it between starting and completing, which can span\n * sessions.\n * @minLength 1\n * @maxLength 255\n */\n pendingVerificationId: string;\n}\n\nexport interface CompleteVerificationResponse {\n /** Verification state after completing the process. */\n verificationState?: VerificationStateWithLiterals;\n}\n\nexport interface GetVoiceOfMerchantRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n}\n\nexport interface GetVoiceOfMerchantResponse {\n /** The Voice-of-Merchant state as reported by Google. */\n voiceOfMerchant?: VoiceOfMerchantState;\n}\n\nexport interface GetLocationInsightsRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /** Time range for the insights query. */\n timeRange: InsightsTimeRange;\n /**\n * Daily metrics to fetch. One InsightsMetric is returned per requested metric.\n * Bounded by the number of DailyMetric values.\n * @maxSize 11\n */\n metricTypes: DailyMetricWithLiterals[];\n}\n\nexport interface InsightsTimeRange {\n /** Start of the time range (inclusive). Truncated to UTC midnight. */\n startDate?: Date | null;\n /** End of the time range (inclusive). Truncated to UTC midnight. */\n endDate?: Date | null;\n}\n\n/**\n * A Google Business Profile Performance daily metric. Values mirror Google's\n * `DailyMetric` enum 1:1 (same wire tokens), so each value maps directly to the\n * metric requested from / returned by the Performance API.\n */\nexport enum DailyMetric {\n /** Business impressions on Google Maps from desktop devices. */\n BUSINESS_IMPRESSIONS_DESKTOP_MAPS = 'BUSINESS_IMPRESSIONS_DESKTOP_MAPS',\n /** Business impressions on Google Search from desktop devices. */\n BUSINESS_IMPRESSIONS_DESKTOP_SEARCH = 'BUSINESS_IMPRESSIONS_DESKTOP_SEARCH',\n /** Business impressions on Google Maps from mobile devices. */\n BUSINESS_IMPRESSIONS_MOBILE_MAPS = 'BUSINESS_IMPRESSIONS_MOBILE_MAPS',\n /** Business impressions on Google Search from mobile devices. */\n BUSINESS_IMPRESSIONS_MOBILE_SEARCH = 'BUSINESS_IMPRESSIONS_MOBILE_SEARCH',\n /** Message conversations received on the business profile. */\n BUSINESS_CONVERSATIONS = 'BUSINESS_CONVERSATIONS',\n /** Direction requests to the business location. */\n BUSINESS_DIRECTION_REQUESTS = 'BUSINESS_DIRECTION_REQUESTS',\n /** Clicks on the business profile call button. */\n CALL_CLICKS = 'CALL_CLICKS',\n /** Clicks on the business profile website link. */\n WEBSITE_CLICKS = 'WEBSITE_CLICKS',\n /** Bookings made via Reserve with Google. */\n BUSINESS_BOOKINGS = 'BUSINESS_BOOKINGS',\n /** Food orders received from the business profile. */\n BUSINESS_FOOD_ORDERS = 'BUSINESS_FOOD_ORDERS',\n /** Clicks on menu content shown on the business profile. */\n BUSINESS_FOOD_MENU_CLICKS = 'BUSINESS_FOOD_MENU_CLICKS',\n}\n\n/** @enumType */\nexport type DailyMetricWithLiterals =\n | DailyMetric\n | 'BUSINESS_IMPRESSIONS_DESKTOP_MAPS'\n | 'BUSINESS_IMPRESSIONS_DESKTOP_SEARCH'\n | 'BUSINESS_IMPRESSIONS_MOBILE_MAPS'\n | 'BUSINESS_IMPRESSIONS_MOBILE_SEARCH'\n | 'BUSINESS_CONVERSATIONS'\n | 'BUSINESS_DIRECTION_REQUESTS'\n | 'CALL_CLICKS'\n | 'WEBSITE_CLICKS'\n | 'BUSINESS_BOOKINGS'\n | 'BUSINESS_FOOD_ORDERS'\n | 'BUSINESS_FOOD_MENU_CLICKS';\n\nexport interface GetLocationInsightsResponse {\n /** Performance metrics for the location over the requested time range. */\n metrics?: InsightsMetric[];\n}\n\nexport interface InsightsMetric {\n /** The metric this breakdown is for. */\n metricType?: DailyMetricWithLiterals;\n /** Total value for the requested time range. */\n totalValue?: string;\n /**\n * Daily breakdown of the metric.\n * @maxSize 366\n */\n dailyValues?: DailyMetricValue[];\n}\n\nexport interface DailyMetricValue {\n /** Date for this data point. Truncated to UTC midnight. */\n date?: Date | null;\n /** Value for this day. */\n value?: string;\n}\n\nexport interface ListSearchKeywordImpressionsRequest {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /** Inclusive calendar-month range to query. */\n monthlyRange: MonthlyRange;\n /** Cursor-based paging. Unset `limit` uses 100; Google's maximum is 100. */\n paging?: CursorPaging;\n}\n\n/** Inclusive calendar-month range for search keyword impressions. */\nexport interface MonthlyRange {\n /** First month to include. */\n startMonth?: CalendarMonth;\n /** Last month to include. */\n endMonth?: CalendarMonth;\n}\n\n/** A calendar month in Google's monthly performance reporting range. */\nexport interface CalendarMonth {\n /**\n * Calendar year, from 1 through 9999.\n * @min 1\n * @max 9999\n */\n year?: number;\n /**\n * Calendar month number, from January (1) through December (12).\n * @min 1\n * @max 12\n */\n month?: number;\n}\n\nexport interface ListSearchKeywordImpressionsResponse {\n /** Search terms for this page in Google's order. */\n keywordImpressions?: SearchKeywordImpression[];\n /** Paging metadata. `cursors.next` is the token to specify for the next page. */\n pagingMetadata?: CursorPagingMetadata;\n}\n\n/** A search term and the impressions Google reports for it. */\nexport interface SearchKeywordImpression\n extends SearchKeywordImpressionImpressionsOneOf {\n /** Exact number of monthly impressions. */\n value?: string;\n /** Privacy threshold below which the actual impression count falls. */\n threshold?: string;\n /**\n * Search term entered by a Google user. May contain personally identifiable information.\n * @maxLength 4096\n */\n searchKeyword?: string;\n}\n\n/** @oneof */\nexport interface SearchKeywordImpressionImpressionsOneOf {\n /** Exact number of monthly impressions. */\n value?: string;\n /** Privacy threshold below which the actual impression count falls. */\n threshold?: string;\n}\n\nexport interface InviteAdminToLocationRequest {\n /**\n * The email of the Google account to invite as a manager. PII.\n * @format EMAIL\n */\n email: string | null;\n /** The role to assign to the invited account. */\n role: RoleWithLiterals;\n /**\n * Location ID (Google's opaque location id) to invite the account to manage.\n * @maxLength 1024\n */\n locationId: string | null;\n}\n\nexport enum Role {\n UNKNOWN = 'UNKNOWN',\n ADMIN_ROLE_UNSPECIFIED = 'ADMIN_ROLE_UNSPECIFIED',\n /** Can manage the profile but not transfer or delete it. */\n MANAGER = 'MANAGER',\n /** Owner-level access to the profile. */\n OWNER = 'OWNER',\n /** The primary owner. A location has exactly one. */\n PRIMARY_OWNER = 'PRIMARY_OWNER',\n /** Legacy Google+ pages manager. Google no longer grants this. */\n SITE_MANAGER = 'SITE_MANAGER',\n}\n\n/** @enumType */\nexport type RoleWithLiterals =\n | Role\n | 'UNKNOWN'\n | 'ADMIN_ROLE_UNSPECIFIED'\n | 'MANAGER'\n | 'OWNER'\n | 'PRIMARY_OWNER'\n | 'SITE_MANAGER';\n\nexport interface InviteAdminToLocationResponse {\n /**\n * Google's invite ID, returned for the consumer to track invitation state.\n * @maxLength 1024\n * @readonly\n */\n inviteId?: string | null;\n}\n\nexport interface GetLocationAdminsRequest {\n /**\n * Location ID (Google's opaque location id) to list admins for.\n * @maxLength 1024\n */\n locationId: string | null;\n}\n\nexport interface GetLocationAdminsResponse {\n /**\n * The accounts that manage this location, including any that have been\n * invited but haven't accepted yet.\n */\n locationAdmins?: LocationAdmin[];\n}\n\n/**\n * An account that manages a Google Business Profile location, or has been\n * invited to.\n *\n * Returned by Get Location Admins. Check `pendingInvitation` to tell an accepted\n * manager from an outstanding invitation, and `role` for the level of access.\n */\nexport interface LocationAdmin {\n /**\n * Identifier of this admin record.\n * @format GUID\n * @readonly\n */\n _id?: string;\n /**\n * The Google location this admin record applies to.\n * @maxLength 1024\n * @readonly\n */\n googleLocationId?: string;\n /**\n * Email address or account name of the manager, or of the invited account.\n * @maxLength 1024\n * @readonly\n */\n name?: string | null;\n /**\n * Resource name of the Google Account this Admin refers to (e.g.\n * \"accounts/12345\").\n * @maxLength 1024\n * @readonly\n */\n accountResourceName?: string;\n /** Role granted to this admin. */\n role?: RoleWithLiterals;\n /** True if the admin has been invited but has not accepted yet. */\n pendingInvitation?: boolean;\n}\n\nexport interface GetAddressSchemaByCountryCodeRequest {\n /**\n * ISO 3166-1 alpha-2 country code (e.g. \"US\", \"UA\", \"KR\").\n * @format COUNTRY\n */\n countryCode: string;\n /**\n * Optional BCP-47 locale (e.g. \"fr\", \"en\"). Selects the language variant for\n * administrative-area names and triggers Google's secondary-language dataset\n * for countries that publish one. Defaults to \"en\" when empty.\n * @maxLength 35\n */\n locale?: string;\n}\n\nexport interface GetAddressSchemaByCountryCodeResponse {\n /** The decoded address form schema for the requested country. */\n schema?: AddressSchema;\n}\n\n/**\n * The per-country address form schema, decoded from the raw libaddressinput\n * record. Mirrors the fields a UI needs to render and validate an address form.\n */\nexport interface AddressSchema {\n /**\n * Echo of the requested ISO 3166-1 alpha-2 country code.\n * @maxLength 16\n */\n countryCode?: string;\n /**\n * Address fields to render, in display order (decoded from the format string).\n * @maxSize 16\n */\n fields?: AddressFieldTypeWithLiterals[];\n /**\n * Subset of `fields` that are mandatory (decoded from the require string).\n * @maxSize 16\n */\n requiredFields?: AddressFieldTypeWithLiterals[];\n /**\n * Administrative areas (states / provinces / regions) for the country, in the\n * language selected by `locale` (Latin names preferred for Latin locales).\n * Empty for countries without a sub-region list.\n * @maxSize 200\n * @maxLength 200\n */\n administrativeAreas?: string[];\n /**\n * The raw libaddressinput format template (e.g. \"%N%n%O%n%A%n%C, %S %Z\").\n * @maxLength 255\n */\n postalFormat?: string;\n /**\n * Languages the country's address data is available in (BCP-47 tags).\n * @maxSize 20\n * @maxLength 35\n */\n languages?: string[];\n /**\n * UI label type for the administrative area (e.g. \"province\", \"state\", \"do\").\n * @maxLength 64\n */\n administrativeAreaType?: string;\n /**\n * UI label type for the locality (e.g. \"city\", \"district\").\n * @maxLength 64\n */\n localityType?: string;\n /**\n * UI label type for the sub-locality / dependent locality.\n * @maxLength 64\n */\n subLocalityType?: string;\n /**\n * UI label type for the postal code (e.g. \"postal\", \"zip\", \"pin\").\n * @maxLength 64\n */\n postalCodeType?: string;\n}\n\n/**\n * An address form field, decoded from Google's libaddressinput format string.\n * The comment after each value is the libaddressinput format-code letter it\n * corresponds to (e.g. \"%N%n%O%n%A%n%C, %S %Z\").\n */\nexport enum AddressFieldType {\n /** Code `N`. Recipient or contact name. */\n NAME = 'NAME',\n /** Code `O`. Organization or company. */\n ORGANIZATION = 'ORGANIZATION',\n /** Code `A`. Street address lines. */\n STREET_ADDRESS = 'STREET_ADDRESS',\n /** Code `D`. Dependent locality, such as a neighborhood or suburb. */\n DEPENDENT_LOCALITY = 'DEPENDENT_LOCALITY',\n /** Code `C`. Locality, such as a city or town. */\n LOCALITY = 'LOCALITY',\n /** Code `S`. Administrative area, such as a state, province, or region. */\n ADMIN_AREA = 'ADMIN_AREA',\n /** Code `Z`. Postal or ZIP code. */\n POSTAL_CODE = 'POSTAL_CODE',\n /** Code `X`. Sorting code, such as CEDEX in France. */\n SORTING_CODE = 'SORTING_CODE',\n}\n\n/** @enumType */\nexport type AddressFieldTypeWithLiterals =\n | AddressFieldType\n | 'NAME'\n | 'ORGANIZATION'\n | 'STREET_ADDRESS'\n | 'DEPENDENT_LOCALITY'\n | 'LOCALITY'\n | 'ADMIN_AREA'\n | 'POSTAL_CODE'\n | 'SORTING_CODE';\n\nexport interface SuggestRegionsRequest {\n /**\n * Partial free-text the end-user is typing (e.g. \"new y\"). Sent per debounced\n * keystroke; Google returns region/city predictions matching this prefix.\n * Queries shorter than 3 chars return an empty list (handled server-side),\n * not an error.\n * @minLength 1\n * @maxLength 200\n */\n query: string;\n /**\n * ISO 3166-1 alpha-2 country to restrict results to (e.g. \"US\").\n * @format COUNTRY\n */\n countryCode: string;\n /**\n * Optional BCP-47 language for the returned names (e.g. \"fr\"). Defaults to\n * Google's behavior (typically the account/region language) when empty.\n * @maxLength 35\n */\n languageCode?: string;\n}\n\nexport interface SuggestRegionsResponse {\n /**\n * Region/city predictions ranked by Google, best match first.\n * @maxSize 20\n */\n suggestions?: RegionSuggestion[];\n}\n\nexport interface RegionSuggestion {\n /**\n * Google's opaque place identifier for the predicted region.\n * @maxLength 255\n */\n placeId?: string;\n /**\n * Full human-readable prediction text (e.g. \"New York, NY, USA\").\n * @maxLength 512\n */\n description?: string;\n /**\n * Primary part of the prediction (e.g. \"New York\"), for bold styling.\n * @maxLength 512\n */\n mainText?: string;\n /**\n * Secondary part of the prediction (e.g. \"NY, USA\"), for muted styling.\n * @maxLength 512\n */\n secondaryText?: string;\n}\n\nexport interface SuggestEstablishmentsRequest {\n /**\n * Partial free-text the end-user is typing (e.g. \"acme hard\"). Sent per\n * debounced keystroke; Google returns business-name predictions matching\n * this prefix. Queries shorter than 3 chars return an empty list\n * (handled server-side), not an error.\n * @minLength 1\n * @maxLength 200\n */\n query: string;\n /**\n * Optional ISO 3166-1 alpha-2 country to restrict results to (e.g. \"US\").\n * Unlike SuggestRegions, business search is unrestricted when omitted.\n * @format COUNTRY\n */\n countryCode?: string | null;\n /**\n * Optional BCP-47 language for the returned names (e.g. \"fr\"). Defaults to\n * Google's behavior (typically the account/region language) when empty.\n * @maxLength 35\n */\n languageCode?: string;\n}\n\nexport interface SuggestEstablishmentsResponse {\n /**\n * Business-name predictions ranked by Google, best match first.\n * @maxSize 20\n */\n suggestions?: EstablishmentSuggestion[];\n}\n\nexport interface EstablishmentSuggestion {\n /**\n * Google's opaque place identifier for the predicted business.\n * @maxLength 255\n */\n placeId?: string;\n /**\n * Full human-readable prediction text (e.g. \"Acme Hardware, Main St, NYC\").\n * @maxLength 512\n */\n description?: string;\n /**\n * Primary part of the prediction (e.g. \"Acme Hardware\"), for bold styling.\n * @maxLength 512\n */\n mainText?: string;\n /**\n * Secondary part of the prediction (e.g. \"Main St, NYC\"), for muted styling.\n * @maxLength 512\n */\n secondaryText?: string;\n}\n\nexport interface SearchGoogleLocationsRequest\n extends SearchGoogleLocationsRequestCriteriaOneOf {\n /**\n * Free-text search (business name, optionally with an address), e.g.\n * \"Acme Hardware, Main St\". Maps to googleLocations:search {query}.\n * @minLength 1\n * @maxLength 200\n */\n query?: string;\n /**\n * Structured search built from data the merchant already entered. Maps to\n * googleLocations:search {location}. Only the fields Google matches on\n * (title, address) are meaningful; the rest are ignored for search.\n */\n location?: GoogleLocation;\n}\n\n/** @oneof */\nexport interface SearchGoogleLocationsRequestCriteriaOneOf {\n /**\n * Free-text search (business name, optionally with an address), e.g.\n * \"Acme Hardware, Main St\". Maps to googleLocations:search {query}.\n * @minLength 1\n * @maxLength 200\n */\n query?: string;\n /**\n * Structured search built from data the merchant already entered. Maps to\n * googleLocations:search {location}. Only the fields Google matches on\n * (title, address) are meaningful; the rest are ignored for search.\n */\n location?: GoogleLocation;\n}\n\nexport interface SearchGoogleLocationsResponse {\n /**\n * Catalog matches ranked by Google, best match first. Empty when nothing\n * matches.\n * @maxSize 20\n */\n matches?: GoogleLocationMatch[];\n}\n\nexport interface GoogleLocationMatch {\n /**\n * The matched catalog location (Google resource name in `name`, plus title,\n * address, and any other fields Google returns on the match).\n */\n location?: GoogleLocation;\n /**\n * Whether this listing can be claimed. Read it carefully: it describes the\n * catalog rather than the site owner. See Search Google Locations.\n */\n status?: MatchStatusWithLiterals;\n}\n\n/**\n * Ownership status of a catalog match, derived from Google's\n * request-admin-rights signal. App-account-scoped (see SearchGoogleLocations):\n * it reflects whether the entry is claimed by *any* Google account, not by the\n * merchant.\n */\nexport enum MatchStatus {\n /** The catalog entry is unclaimed and can be created/associated. */\n CLAIMABLE = 'CLAIMABLE',\n /** The catalog entry is already claimed by some Google account. */\n OWNED_ELSEWHERE = 'OWNED_ELSEWHERE',\n}\n\n/** @enumType */\nexport type MatchStatusWithLiterals =\n | MatchStatus\n | 'CLAIMABLE'\n | 'OWNED_ELSEWHERE';\n\nexport interface DomainEvent extends DomainEventBodyOneOf {\n createdEvent?: EntityCreatedEvent;\n updatedEvent?: EntityUpdatedEvent;\n deletedEvent?: EntityDeletedEvent;\n actionEvent?: ActionEvent;\n /** Event ID. With this ID you can easily spot duplicated events and ignore them. */\n _id?: string;\n /**\n * Fully Qualified Domain Name of an entity. This is a unique identifier assigned to the API main business entities.\n * For example, `wix.stores.catalog.product`, `wix.bookings.session`, `wix.payments.transaction`.\n */\n entityFqdn?: string;\n /**\n * Event action name, placed at the top level to make it easier for users to dispatch messages.\n * For example: `created`/`updated`/`deleted`/`started`/`completed`/`email_opened`.\n */\n slug?: string;\n /** ID of the entity associated with the event. */\n entityId?: string;\n /** Event timestamp in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format and UTC time. For example, `2020-04-26T13:57:50.699Z`. */\n eventTime?: Date | null;\n /**\n * Whether the event was triggered as a result of a privacy regulation application\n * (for example, GDPR).\n */\n triggeredByAnonymizeRequest?: boolean | null;\n /** If present, indicates the action that triggered the event. */\n originatedFrom?: string | null;\n /**\n * A sequence number that indicates the order of updates to an entity. For example, if an entity was updated at `16:00` and then again at `16:01`, the second update will always have a higher sequence number.\n * You can use this number to make sure you're handling updates in the right order. Just save the latest sequence number on your end and compare it to the one in each new message. If the new message has an older (lower) number, you can safely ignore it.\n */\n entityEventSequence?: string | null;\n}\n\n/** @oneof */\nexport interface DomainEventBodyOneOf {\n createdEvent?: EntityCreatedEvent;\n updatedEvent?: EntityUpdatedEvent;\n deletedEvent?: EntityDeletedEvent;\n actionEvent?: ActionEvent;\n}\n\nexport interface EntityCreatedEvent {\n entity?: string;\n}\n\nexport interface RestoreInfo {\n deletedDate?: Date | null;\n}\n\nexport interface EntityUpdatedEvent {\n /**\n * Since platformized APIs only expose PATCH and not PUT we can't assume that the fields sent from the client are the actual diff.\n * This means that to generate a list of changed fields (as opposed to sent fields) one needs to traverse both objects.\n * We don't want to impose this on all developers and so we leave this traversal to the notification recipients which need it.\n */\n currentEntity?: string;\n}\n\nexport interface EntityDeletedEvent {\n /** Entity that was deleted. */\n deletedEntity?: string | null;\n}\n\nexport interface ActionEvent {\n body?: string;\n}\n\nexport interface Empty {}\n\nexport interface MessageEnvelope {\n /**\n * App instance ID.\n * @format GUID\n */\n instanceId?: string | null;\n /**\n * Event type.\n * @maxLength 150\n */\n eventType?: string;\n /** The identification type and identity data. */\n identity?: IdentificationData;\n /** Stringify payload. */\n data?: string;\n /** Details related to the account */\n accountInfo?: AccountInfo;\n}\n\nexport interface IdentificationData extends IdentificationDataIdOneOf {\n /**\n * ID of a site visitor that has not logged in to the site.\n * @format GUID\n */\n anonymousVisitorId?: string;\n /**\n * ID of a site visitor that has logged in to the site.\n * @format GUID\n */\n memberId?: string;\n /**\n * ID of a Wix user (site owner, contributor, etc.).\n * @format GUID\n */\n wixUserId?: string;\n /**\n * ID of an app.\n * @format GUID\n */\n appId?: string;\n /** @readonly */\n identityType?: WebhookIdentityTypeWithLiterals;\n}\n\n/** @oneof */\nexport interface IdentificationDataIdOneOf {\n /**\n * ID of a site visitor that has not logged in to the site.\n * @format GUID\n */\n anonymousVisitorId?: string;\n /**\n * ID of a site visitor that has logged in to the site.\n * @format GUID\n */\n memberId?: string;\n /**\n * ID of a Wix user (site owner, contributor, etc.).\n * @format GUID\n */\n wixUserId?: string;\n /**\n * ID of an app.\n * @format GUID\n */\n appId?: string;\n}\n\nexport enum WebhookIdentityType {\n UNKNOWN = 'UNKNOWN',\n ANONYMOUS_VISITOR = 'ANONYMOUS_VISITOR',\n MEMBER = 'MEMBER',\n WIX_USER = 'WIX_USER',\n APP = 'APP',\n}\n\n/** @enumType */\nexport type WebhookIdentityTypeWithLiterals =\n | WebhookIdentityType\n | 'UNKNOWN'\n | 'ANONYMOUS_VISITOR'\n | 'MEMBER'\n | 'WIX_USER'\n | 'APP';\n\nexport interface AccountInfo {\n /**\n * ID of the Wix account associated with the event.\n * @format GUID\n */\n accountId?: string | null;\n /**\n * ID of the parent Wix account. Only included when accountId belongs to a child account.\n * @format GUID\n */\n parentAccountId?: string | null;\n /**\n * ID of the Wix site associated with the event. Only included when the event is tied to a specific site.\n * @format GUID\n */\n siteId?: string | null;\n}\n\n/** @docsIgnore */\nexport type CreateLocationApplicationErrors = {\n code?: 'CONNECTION_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n};\n/** @docsIgnore */\nexport type CreateGoogleLocationApplicationErrors =\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n }\n | {\n code?: 'GOOGLE_LOCATION_VALIDATION_FAILED';\n description?: string;\n data?: GoogleLocationValidationError;\n }\n | {\n code?: 'INVALID_LOCATION_PAYLOAD';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'LOCATION_DB_PERSIST_FAILED';\n description?: string;\n data?: LocationDbPersistFailedError;\n }\n | {\n code?: 'CONNECTION_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n };\n/** @docsIgnore */\nexport type DeleteGoogleLocationApplicationErrors =\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n }\n | {\n code?: 'LOCATION_DB_PERSIST_FAILED';\n description?: string;\n data?: LocationDbPersistFailedError;\n }\n | {\n code?: 'LOCATION_NOT_DELETABLE_VIA_API';\n description?: string;\n data?: LocationNotDeletableViaApiError;\n };\n/** @docsIgnore */\nexport type UpdateGoogleLocationApplicationErrors =\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n }\n | {\n code?: 'GOOGLE_LOCATION_VALIDATION_FAILED';\n description?: string;\n data?: GoogleLocationValidationError;\n }\n | {\n code?: 'INVALID_UPDATE_MASK';\n description?: string;\n data?: InvalidUpdateMaskError;\n };\n/** @docsIgnore */\nexport type BulkCreateLocationsApplicationErrors = {\n code?: 'CONNECTION_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n};\n/** @docsIgnore */\nexport type ListGbpAccountsApplicationErrors = {\n code?: 'CONNECTION_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n};\n/** @docsIgnore */\nexport type ListUnimportedLocationsApplicationErrors = {\n code?: 'CONNECTION_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n};\n/** @docsIgnore */\nexport type ListReviewsApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type PutReviewReplyApplicationErrors =\n | {\n code?: 'REVIEW_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n };\n/** @docsIgnore */\nexport type DeleteReviewReplyApplicationErrors =\n | {\n code?: 'REVIEW_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n };\n/** @docsIgnore */\nexport type ListMediaApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type CreateMediaApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type DeleteMediaApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type UpdateLocationFoodMenusApplicationErrors =\n | {\n code?: 'NOT_IMPLEMENTED';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'WIX_MENU_NOT_FOUND';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'GBP_LOCATION_NOT_FOUND_ON_GOOGLE';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n };\n/** @docsIgnore */\nexport type UpdateLocationAttributesApplicationErrors =\n | {\n code?: 'INVALID_VALUE_JSON';\n description?: string;\n data?: InvalidValueJsonError;\n }\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n };\n/** @docsIgnore */\nexport type GetLocationAttributesApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type GetLocationLodgingApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type UpdateLocationLodgingApplicationErrors =\n | {\n code?: 'INVALID_UPDATE_MASK';\n description?: string;\n data?: InvalidUpdateMaskError;\n }\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n };\n/** @docsIgnore */\nexport type ListAttributeMetadataApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type ListCategoriesApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type GetVerificationOptionsApplicationErrors =\n | {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n }\n | {\n code?: 'INVALID_VERIFICATION_ADDRESS';\n description?: string;\n data?: Record<string, any>;\n };\n/** @docsIgnore */\nexport type StartVerificationApplicationErrors =\n | {\n code?: 'UNSUPPORTED_VERIFICATION_METHOD';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'AUTO_VERIFICATION_NOT_ELIGIBLE';\n description?: string;\n data?: Record<string, any>;\n };\n/** @docsIgnore */\nexport type CompleteVerificationApplicationErrors =\n | {\n code?: 'VERIFICATION_EXPIRED';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'VERIFICATION_PIN_INVALID';\n description?: string;\n data?: Record<string, any>;\n }\n | {\n code?: 'VERIFICATION_PIN_EXPIRED';\n description?: string;\n data?: Record<string, any>;\n };\n/** @docsIgnore */\nexport type ListSearchKeywordImpressionsApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type GetAddressSchemaByCountryCodeApplicationErrors = {\n code?: 'ADDRESS_DATA_FETCH_FAILED';\n description?: string;\n data?: Record<string, any>;\n};\n/** @docsIgnore */\nexport type SuggestRegionsApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type SuggestEstablishmentsApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n/** @docsIgnore */\nexport type SearchGoogleLocationsApplicationErrors = {\n code?: 'GOOGLE_API_CALL_FAILED';\n description?: string;\n data?: GoogleApiCallFailedError;\n};\n\n/**\n * Retrieves a GBP location as it's stored for the site.\n *\n * This doesn't call Google, so it's the cheapest way to check whether a\n * location is recorded and to read its `accountId` or\n * `serviceAreaPostalAddress`. To get the live Google profile as well, call\n * Get Google Location.\n * @param locationId - ID of the location to retrieve. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_g_b_p_location\n * @applicableIdentity APP\n * @returns The retrieved location.\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetGBPLocation\n */\nexport async function getGbpLocation(\n locationId: string\n): Promise<\n NonNullablePaths<\n GBPLocation,\n | `_id`\n | `accountId`\n | `serviceAreaPostalAddress.countryCode`\n | `serviceAreaPostalAddress.postalCode`\n | `serviceAreaPostalAddress.administrativeArea`\n | `serviceAreaPostalAddress.locality`\n | `serviceAreaPostalAddress.addressLines`\n | `revision`\n | `googleLocationId`,\n 3\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.getGbpLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)?.gbplocation!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves a list of up to 100 GBP locations, given the provided paging,\n * filtering, and sorting.\n *\n * Returns the site's stored locations. It doesn't call Google, so the response\n * contains identifiers and stored metadata rather than live profile data. To\n * retrieve the same locations with their current Google data, call Query Google\n * Locations.\n *\n * Supported properties for filtering and sorting: `id`, `googleLocationId`,\n * `accountId`.\n *\n * To learn about working with Query methods, see\n * [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language),\n * [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging),\n * and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection).\n * @public\n * @documentationMaturity preview\n * @permissionId gbp:location:v1:gbplocation:query_g_b_p_locations\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.QueryGBPLocations\n */\nexport function queryGbpLocations(): LocationsQueryBuilder {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[0] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n return queryBuilder<\n GBPLocation,\n 'CURSOR',\n QueryGBPLocationsRequest,\n QueryGBPLocationsResponse\n >({\n func: async (payload: QueryGBPLocationsRequest) => {\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.queryGbpLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n return result;\n } catch (err) {\n sideEffects?.onError?.(err);\n throw err;\n }\n },\n requestTransformer: (query: QueryGBPLocationsRequest['query']) => {\n const args = [query, {}] as [QueryGBPLocationsRequest['query'], {}];\n return renameKeysFromSDKRequestToRESTRequest({\n ...args?.[1],\n query: args?.[0],\n });\n },\n responseTransformer: ({\n data,\n }: HttpResponse<QueryGBPLocationsResponse>) => {\n const transformedData = renameKeysFromRESTResponseToSDKResponse(\n transformPaths(data, [])\n );\n\n return {\n items: transformedData?.locations,\n pagingMetadata: transformedData?.pagingMetadata,\n };\n },\n errorTransformer: (err: unknown) => {\n const transformedError = sdkTransformError(err, {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { query: '$[0]' },\n singleArgumentUnchanged: false,\n });\n\n throw transformedError;\n },\n pagingMethod: 'CURSOR',\n transformationPaths: {},\n });\n}\n\ninterface QueryCursorResult {\n cursors: Cursors;\n hasNext: () => boolean;\n hasPrev: () => boolean;\n length: number;\n pageSize: number;\n}\n\nexport interface LocationsQueryResult extends QueryCursorResult {\n items: GBPLocation[];\n query: LocationsQueryBuilder;\n next: () => Promise<LocationsQueryResult>;\n prev: () => Promise<LocationsQueryResult>;\n}\n\nexport interface LocationsQueryBuilder {\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n eq: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n ne: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n ge: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n gt: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n le: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `value`.\n * @param value - Value to compare against.\n * @documentationMaturity preview\n */\n lt: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @param propertyName - Property whose value is compared with `string`.\n * @param string - String to compare against. Case-insensitive.\n * @documentationMaturity preview\n */\n startsWith: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: string\n ) => LocationsQueryBuilder;\n /** @documentationMaturity preview */\n in: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: any\n ) => LocationsQueryBuilder;\n /** @documentationMaturity preview */\n exists: (\n propertyName: '_id' | 'accountId' | 'googleLocationId',\n value: boolean\n ) => LocationsQueryBuilder;\n /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments.\n * @documentationMaturity preview\n */\n ascending: (\n ...propertyNames: Array<'_id' | 'accountId' | 'googleLocationId'>\n ) => LocationsQueryBuilder;\n /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments.\n * @documentationMaturity preview\n */\n descending: (\n ...propertyNames: Array<'_id' | 'accountId' | 'googleLocationId'>\n ) => LocationsQueryBuilder;\n /** @param limit - Number of items to return, which is also the `pageSize` of the results object.\n * @documentationMaturity preview\n */\n limit: (limit: number) => LocationsQueryBuilder;\n /** @param cursor - A pointer to specific record\n * @documentationMaturity preview\n */\n skipTo: (cursor: string) => LocationsQueryBuilder;\n /** @documentationMaturity preview */\n find: () => Promise<LocationsQueryResult>;\n}\n\n/**\n * @hidden\n * @fqn wix.gbp.location.v1.GbpLocationsService.QueryGBPLocations\n * @requiredField query\n */\nexport async function typedQueryGbpLocations(\n query: GBPLocationQuery\n): Promise<\n NonNullablePaths<\n QueryGBPLocationsResponse,\n | `locations`\n | `locations.${number}._id`\n | `locations.${number}.accountId`\n | `locations.${number}.serviceAreaPostalAddress.countryCode`\n | `locations.${number}.serviceAreaPostalAddress.postalCode`\n | `locations.${number}.serviceAreaPostalAddress.administrativeArea`\n | `locations.${number}.serviceAreaPostalAddress.locality`\n | `locations.${number}.revision`\n | `locations.${number}.googleLocationId`,\n 5\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({ query: query });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.queryGbpLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { query: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['query']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface GBPLocationQuerySpec extends QuerySpec {\n paging: 'cursor';\n wql: [\n {\n fields: ['_id', 'accountId', 'googleLocationId'];\n operators: '*';\n sort: 'BOTH';\n }\n ];\n}\n\nexport type CommonQueryWithEntityContext = QuerySdkType<\n GBPLocation,\n GBPLocationQuerySpec\n>;\nexport type GBPLocationQuery = {\n /** \n Cursor paging options.\n\n Learn more about [cursor paging](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#cursor-paging). \n */\n cursorPaging?: {\n /** \n Maximum number of items to return in the results. \n @max: 100 \n */\n limit?:\n | NonNullable<CommonQueryWithEntityContext['cursorPaging']>['limit']\n | null;\n /** \n Pointer to the next or previous page in the list of results.\n\n Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n Not relevant for the first request. \n @maxLength: 16000 \n */\n cursor?:\n | NonNullable<CommonQueryWithEntityContext['cursorPaging']>['cursor']\n | null;\n };\n /** \n Filter object.\n\n Learn more about the [filter section](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#the-filter-section). \n */\n filter?: CommonQueryWithEntityContext['filter'] | null;\n /** \n Sort object.\n\n Learn more about the [sort section](https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#the-sort-section). \n @maxSize: 5 \n */\n sort?: {\n /** \n Name of the field to sort by. \n @maxLength: 512 \n */\n fieldName?: NonNullable<\n CommonQueryWithEntityContext['sort']\n >[number]['fieldName'];\n /** \n Sort order. \n */\n order?: NonNullable<CommonQueryWithEntityContext['sort']>[number]['order'];\n }[];\n};\n\nexport const utils = {\n query: /*#__PURE__*/ createQueryUtils<\n GBPLocation,\n GBPLocationQuerySpec,\n GBPLocationQuery\n >(),\n};\n\n/**\n * Retrieves a list of up to 100 GBP locations with their current Google data,\n * given the provided paging, filtering, and sorting.\n *\n * Takes the same filters as Query GBP Locations, and additionally retrieves each\n * location's live profile data from Google: title, address, opening hours and so\n * on. Use it when you need both the stored identifiers and the current profile\n * in one call.\n *\n * A location whose Google data can't be retrieved is still returned, with the\n * reason in that location's `googleError`. The call as a whole succeeds and\n * paging is unaffected, so check `googleError` per location rather than relying\n * on the response status.\n *\n * Supported properties for filtering and sorting: `id`, `googleLocationId`,\n * `accountId`.\n *\n * To learn about working with Query methods, see\n * [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language),\n * [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging),\n * and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection).\n * @public\n * @documentationMaturity preview\n * @permissionId gbp:location:v1:gbplocation:query_google_locations\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.QueryGoogleLocations\n */\nexport async function queryGoogleLocations(\n options?: QueryGoogleLocationsOptions\n): Promise<\n NonNullablePaths<\n QueryGoogleLocationsResponse,\n | `locations`\n | `locations.${number}.googleLocation.name`\n | `locations.${number}.googleLocation.title`\n | `locations.${number}.googleLocation.languageCode`\n | `locations.${number}.googleLocation.primaryCategory._id`\n | `locations.${number}.googleLocation.primaryCategory.displayName`\n | `locations.${number}.googleLocation.profile.description`\n | `locations.${number}.googleLocation.storefrontAddress.countryCode`\n | `locations.${number}.googleLocation.storefrontAddress.postalCode`\n | `locations.${number}.googleLocation.storefrontAddress.administrativeArea`\n | `locations.${number}.googleLocation.storefrontAddress.locality`\n | `locations.${number}.googleLocation.serviceArea.businessType`\n | `locations.${number}.googleLocation.serviceArea.regionCode`\n | `locations.${number}.googleLocation.primaryPhone`\n | `locations.${number}.googleLocation.storeCode`\n | `locations.${number}.googleLocation.latLng.latitude`\n | `locations.${number}.googleLocation.latLng.longitude`\n | `locations.${number}.googleLocation.openInfo.status`\n | `locations.${number}.googleLocation.openInfo.canReopen`\n | `locations.${number}.googleLocation.metadata.canOperateLodgingData`\n | `locations.${number}.googleError.code`\n | `locations.${number}.googleError.description`\n | `locations.${number}.voiceOfMerchant.hasVoiceOfMerchant`\n | `locations.${number}.voiceOfMerchant.hasBusinessAuthority`\n | `locations.${number}.voiceOfMerchant.state`\n | `locations.${number}.voiceOfMerchant.recommendationReason`\n | `locations.${number}.voiceOfMerchant.hasPendingVerification`\n | `locations.${number}.location._id`\n | `locations.${number}.location.accountId`\n | `locations.${number}.location.revision`\n | `locations.${number}.location.googleLocationId`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n query: options?.query,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.queryGoogleLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { query: '$[0].query' },\n singleArgumentUnchanged: false,\n },\n ['options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface QueryGoogleLocationsOptions {\n /**\n * Query to filter, sort and page the results. Takes the same properties as\n * Query GBP Locations.\n *\n * Supported properties: `id`, `googleLocationId`, `accountId`.\n */\n query?: CursorQuery;\n}\n\n/**\n * Retrieves a GBP location with its current Google data.\n *\n * The single-location counterpart of Query Google Locations, with the same\n * behavior: if the profile data can't be retrieved from Google, the location is\n * still returned and the reason is in `googleError`.\n *\n * If the location isn't found, the call fails and Google isn't contacted.\n * @param locationId - ID of the location to retrieve. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_google_location\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetGoogleLocation\n */\nexport async function getGoogleLocation(\n locationId: string\n): Promise<\n NonNullablePaths<\n GetGoogleLocationResponse,\n | `location.googleLocation.name`\n | `location.googleLocation.title`\n | `location.googleLocation.languageCode`\n | `location.googleLocation.primaryCategory._id`\n | `location.googleLocation.primaryCategory.displayName`\n | `location.googleLocation.additionalCategories`\n | `location.googleLocation.profile.description`\n | `location.googleLocation.storefrontAddress.countryCode`\n | `location.googleLocation.storefrontAddress.postalCode`\n | `location.googleLocation.storefrontAddress.administrativeArea`\n | `location.googleLocation.storefrontAddress.locality`\n | `location.googleLocation.storefrontAddress.addressLines`\n | `location.googleLocation.serviceArea.businessType`\n | `location.googleLocation.serviceArea.places`\n | `location.googleLocation.serviceArea.places.${number}.placeName`\n | `location.googleLocation.serviceArea.places.${number}.placeId`\n | `location.googleLocation.serviceArea.regionCode`\n | `location.googleLocation.primaryPhone`\n | `location.googleLocation.additionalPhones`\n | `location.googleLocation.storeCode`\n | `location.googleLocation.regularHours`\n | `location.googleLocation.regularHours.${number}.openDay`\n | `location.googleLocation.regularHours.${number}.openTime.hours`\n | `location.googleLocation.regularHours.${number}.openTime.minutes`\n | `location.googleLocation.regularHours.${number}.closeDay`\n | `location.googleLocation.latLng.latitude`\n | `location.googleLocation.latLng.longitude`\n | `location.googleLocation.openInfo.status`\n | `location.googleLocation.openInfo.canReopen`\n | `location.googleLocation.metadata.canOperateLodgingData`\n | `location.googleError.code`\n | `location.googleError.description`\n | `location.voiceOfMerchant.hasVoiceOfMerchant`\n | `location.voiceOfMerchant.hasBusinessAuthority`\n | `location.voiceOfMerchant.state`\n | `location.voiceOfMerchant.recommendationReason`\n | `location.voiceOfMerchant.hasPendingVerification`\n | `location.location._id`\n | `location.location.accountId`\n | `location.location.revision`\n | `location.location.googleLocationId`,\n 7\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getGoogleLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Imports an existing Google Business Profile location.\n *\n * Specify the Google account ID in `accountId` and the Google location ID in\n * `location.id`. Both are available from List Unimported Locations.\n *\n * This doesn't create a listing in Google. It records a location the Google\n * account already has, so that the site can manage it. To create a new listing,\n * call Create Google Location.\n *\n * A Google account must be connected first, or the call fails with\n * `CONNECTION_NOT_FOUND`. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n * @param location - The location to record for this site.\n *\n * `id` is required and must be Google's location ID. `accountId` is required\n * too, because it identifies which Google account holds the listing.\n * @public\n * @documentationMaturity preview\n * @requiredField location\n * @requiredField location._id\n * @requiredField location.accountId\n * @permissionId gbp:location:v1:gbplocation:create_location\n * @applicableIdentity APP\n * @returns The created location.\n * @fqn wix.gbp.location.v1.GbpLocationsService.CreateLocation\n */\nexport async function createLocation(\n location: NonNullablePaths<GBPLocation, `_id` | `accountId`, 2>\n): Promise<\n NonNullablePaths<\n GBPLocation,\n | `_id`\n | `accountId`\n | `serviceAreaPostalAddress.countryCode`\n | `serviceAreaPostalAddress.postalCode`\n | `serviceAreaPostalAddress.administrativeArea`\n | `serviceAreaPostalAddress.locality`\n | `serviceAreaPostalAddress.addressLines`\n | `revision`\n | `googleLocationId`,\n 3\n > & {\n __applicationErrorsType?: CreateLocationApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({ location: location });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.createLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)?.location!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { location: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['location']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Updates a GBP location's stored fields.\n *\n * This doesn't change anything on the Google Business Profile. Only fields the\n * GBP location itself stores can be updated: `serviceAreaPostalAddress`, and\n * `feedEntityId` if it doesn't have a value yet. Naming a Google-owned field in\n * `fieldMask` has no effect. To change the profile in Google, call Update Google\n * Location.\n *\n * List the fields to change in `fieldMask`.\n * @param _id - Google's opaque location identifier on the public API.\n * @public\n * @documentationMaturity preview\n * @requiredField _id\n * @requiredField location\n * @permissionId gbp:location:v1:gbplocation:update_location\n * @applicableIdentity APP\n * @returns The updated location.\n * @fqn wix.gbp.location.v1.GbpLocationsService.UpdateLocation\n */\nexport async function updateLocation(\n _id: string,\n location: UpdateLocation\n): Promise<\n NonNullablePaths<\n GBPLocation,\n | `_id`\n | `accountId`\n | `serviceAreaPostalAddress.countryCode`\n | `serviceAreaPostalAddress.postalCode`\n | `serviceAreaPostalAddress.administrativeArea`\n | `serviceAreaPostalAddress.locality`\n | `serviceAreaPostalAddress.addressLines`\n | `revision`\n | `googleLocationId`,\n 3\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n location: { ...location, id: _id },\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.updateLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)?.location!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: { location: '$[1]' },\n explicitPathsToArguments: { 'location.id': '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['_id', 'location']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface UpdateLocation {\n /**\n * Google's opaque location identifier on the public API.\n * @immutable\n * @minLength 1\n * @maxLength 255\n */\n _id?: string;\n /**\n * ID of the Google Business Profile account that holds this location, what\n * Google calls a location group.\n *\n * One site can have locations in more than one account, because a single\n * Google login can own several.\n * @immutable\n * @maxLength 255\n */\n accountId?: string;\n /**\n * Saved postal address for service-area businesses. Used as the `context`\n * parameter in Google's FetchVerificationOptions call for service-area\n * verification flows. Null for storefront businesses.\n */\n serviceAreaPostalAddress?: PostalAddress;\n /**\n * Date and time the location was imported into Wix.\n * @readonly\n */\n _createdDate?: Date | null;\n /**\n * Date and time the location was last updated.\n * @readonly\n */\n _updatedDate?: Date | null;\n /**\n * Revision number, incremented on every update. Used for optimistic locking.\n * @readonly\n */\n revision?: string;\n /**\n * Google's location identifier for this location, the same value as `id`.\n * Filter and sort on this field in Query GBP Locations.\n * @immutable\n * @maxLength 255\n * @readonly\n */\n googleLocationId?: string;\n /**\n * Identity this location is published under in Google partner feeds, used as\n * the entity ID, merchant ID or parent entity ID across Reserve with Google,\n * Order with Google and Dine with Google.\n *\n * Can be set once. A location that already has a value keeps it, and a request\n * that tries to change it is rejected: Google has already ingested the value as\n * the merchant's identity, so changing it withdraws the business from those\n * feeds and can remove its booking and ordering buttons. Setting it on a\n * location that doesn't have one yet is allowed.\n *\n * Locations created through this API are given a value automatically, so you\n * usually don't need to set it. Specify it only when migrating a location whose\n * identity Google already knows.\n * @maxLength 288\n */\n feedEntityId?: string | null;\n}\n\n/**\n * Deletes a GBP location, leaving the Google Business Profile listing in place.\n *\n * This is the recovery path, for when the listing is already gone from Google, or\n * is unreachable, and the stored location needs cleaning up. For the usual\n * delete, which removes the listing from Google too, call Delete Google Location.\n * @param locationId - ID of the location to delete. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:delete_location\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.DeleteLocation\n */\nexport async function deleteLocation(locationId: string): Promise<void> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.deleteLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Creates a Business Profile listing in Google and records it for the site.\n *\n * Use this to add a location the Google account doesn't have yet. To record a\n * listing that already exists, call Create Location instead.\n *\n * Specify at least one of `storefrontAddress` or `serviceArea`. If neither is set,\n * the call fails with `INVALID_LOCATION_PAYLOAD`.\n *\n * Both can be set together when `serviceArea.businessType` is\n * `CUSTOMER_AND_BUSINESS_LOCATION`, which is how a business that has premises and\n * also travels to customers is represented.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * Set `validateOnly` to check the details without creating anything: Google\n * runs the same validation and returns the same errors, but no listing is\n * created and none is recorded for the site. On success the response has no\n * `location` — that absence is what \"valid\" looks like.\n *\n * Errors:\n * - `CONNECTION_NOT_FOUND`: no Google account is connected. Google isn't called.\n * - `TOKEN_RESOLUTION_FAILED`: the stored credentials couldn't be used. Google\n * isn't called and nothing is created.\n * - `GOOGLE_LOCATION_VALIDATION_FAILED`: Google rejected the details, for\n * example an invalid phone number or address, or a listing that needs a\n * postcard PIN. The specific reasons are in the error payload, and they're\n * worth surfacing: they tell the site owner what to correct. Nothing is\n * created.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed for any other reason.\n * Google's status and response are in the error payload. Nothing is created.\n * - `LOCATION_DB_PERSIST_FAILED`: Google created the listing but it couldn't be\n * recorded for the site. The new Google location ID is in the error payload,\n * so keep it: the listing exists in Google and can be recorded with Create\n * Location, or removed with Delete Google Location.\n * @param accountId - GBP account id (numeric, no \"accounts/\" prefix). The server forms the\n * Google resource name as \"accounts/{account_id}\".\n * @public\n * @documentationMaturity preview\n * @requiredField accountId\n * @requiredField options.location\n * @requiredField options.location.languageCode\n * @requiredField options.location.primaryCategory\n * @requiredField options.location.primaryCategory._id\n * @requiredField options.location.title\n * @permissionId gbp:location:v1:gbplocation:create_google_location\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.CreateGoogleLocation\n */\nexport async function createGoogleLocation(\n accountId: string,\n options?: NonNullablePaths<\n CreateGoogleLocationOptions,\n | `location`\n | `location.languageCode`\n | `location.primaryCategory`\n | `location.primaryCategory._id`\n | `location.title`,\n 4\n >\n): Promise<\n NonNullablePaths<\n CreateGoogleLocationResponse,\n | `location._id`\n | `location.accountId`\n | `location.serviceAreaPostalAddress.countryCode`\n | `location.serviceAreaPostalAddress.postalCode`\n | `location.serviceAreaPostalAddress.administrativeArea`\n | `location.serviceAreaPostalAddress.locality`\n | `location.serviceAreaPostalAddress.addressLines`\n | `location.revision`\n | `location.googleLocationId`,\n 4\n > & {\n __applicationErrorsType?: CreateGoogleLocationApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n accountId: accountId,\n location: options?.location,\n validateOnly: options?.validateOnly,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.createGoogleLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n accountId: '$[0]',\n location: '$[1].location',\n validateOnly: '$[1].validateOnly',\n },\n singleArgumentUnchanged: false,\n },\n ['accountId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface CreateGoogleLocationOptions {\n /**\n * The Google Location to create. The `name` field is ignored on input\n * and populated by Google on response.\n */\n location: GoogleLocation;\n /**\n * Dry run. When true the payload is sent to Google's\n * accounts.locations.create with its `validateOnly` query param set, so\n * Google runs its full validation (categories, address, phone, hours,\n * pin-drop requirements) and creates nothing.\n *\n * A dry run reports failures exactly as a real create does — the same\n * GOOGLE_LOCATION_VALIDATION_FAILED reasons, the same INVALID_LOCATION_PAYLOAD\n * for the storefront_address / service_area combinations this service checks\n * itself — which is the point: a caller can pre-flight a form before\n * committing.\n *\n * On success nothing is created at Google, nothing is persisted here, no\n * GBPLocation.CREATED event is emitted, and the response's `location` is\n * UNSET (Google returns no resource name for a validate-only call). Callers\n * must treat an absent `location` as \"validation passed\", not as a failure.\n */\n validateOnly?: boolean;\n}\n\n/**\n * Deletes a Business Profile listing from Google and removes it from the site.\n *\n * This is the usual way to delete a location. To remove a location from the site\n * while leaving the Google listing alone, call Delete Location.\n *\n * Google refuses to delete some listings through its API, including verified or\n * claimed listings, chain-managed locations, and suspended ones. Those have to be\n * removed by the site owner at business.google.com.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `LOCATION_NOT_DELETABLE_VIA_API`: Google won't allow the delete, for one of\n * the reasons above. The location is left in place. Note this is checked before\n * the delete, and Google's answer can change in between, so a delete can still\n * fail after the check passed.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. The location is left in\n * place so the call can be retried. If Google keeps refusing, remove the\n * listing at business.google.com and then call Delete Location.\n * - `LOCATION_DB_PERSIST_FAILED`: Google deleted the listing but the site's copy\n * couldn't be removed. Call Delete Location to finish the job.\n * @param locationId - ID of the location to delete. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:delete_google_location\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.DeleteGoogleLocation\n */\nexport async function deleteGoogleLocation(locationId: string): Promise<\n void & {\n __applicationErrorsType?: DeleteGoogleLocationApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.deleteGoogleLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Updates a location's Business Profile in Google.\n *\n * This changes the profile the public sees on Google. It doesn't change the\n * location stored for the site: to update `serviceAreaPostalAddress`, call Update\n * Location.\n *\n * `fieldMask` is required, and only these top-level fields can be updated:\n * `title`, `storeCode`, `primaryPhone`, `additionalPhones`, `primaryCategory`,\n * `additionalCategories`, `storefrontAddress`, `websiteUri`, `regularHours`,\n * `serviceArea`, `latLng`, `openInfo`, `profile`.\n *\n * Anything else, including a nested path such as `profile.description` or an\n * empty mask, fails with `INVALID_UPDATE_MASK` before Google is called.\n * `languageCode` can't be updated: Google treats it as read-only.\n *\n * ## Categories and phone numbers replace the whole set\n *\n * Google doesn't allow categories or phone numbers to be updated one at a time,\n * so each pair behaves as a single value and Google replaces everything in it.\n * Read this before updating either, because omitting a value deletes it.\n *\n * For categories:\n *\n * - Specify `primaryCategory` and `additionalCategories` together in `fieldMask`.\n * A mask with only one of them fails with `INVALID_UPDATE_MASK`.\n * - Specify the complete set you want the location to end up with, including a\n * primary category. A set without one fails with `INVALID_CATEGORIES`.\n * - Any additional category you leave out is removed, so resend the ones you want\n * to keep.\n *\n * For phone numbers:\n *\n * - Specify `primaryPhone` and `additionalPhones` together in `fieldMask`. A mask\n * with only one of them fails with `INVALID_UPDATE_MASK`.\n * - Specify the complete set of numbers you want the location to end up with. Any\n * number you leave out is removed.\n * - Unlike categories, no primary is required. Masking both and specifying none\n * removes every phone number.\n *\n * ## Errors\n *\n * - `INVALID_UPDATE_MASK`: the mask is empty, or names a field that can't be\n * updated, or masks only one half of the categories or phone numbers pair.\n * Google isn't called.\n * - `GOOGLE_LOCATION_VALIDATION_FAILED`: Google rejected the details, for example\n * an invalid phone number or address, or a listing that needs a postcard PIN.\n * The specific reasons are in the error payload and are worth surfacing: they\n * tell the site owner what to correct.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed for any other reason.\n * Google's status and response are in the error payload.\n * @param locationId - ID of the location to update. This is Google's location identifier, without\n * the `locations/` prefix.\n * @param location - The profile values to set. Only the fields named in `fieldMask` are sent to\n * Google, so this can be partial.\n * @public\n * @documentationMaturity preview\n * @requiredField location\n * @requiredField locationId\n * @requiredField options\n * @requiredField options.fieldMask\n * @permissionId gbp:location:v1:gbplocation:update_google_location\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.UpdateGoogleLocation\n */\nexport async function updateGoogleLocation(\n locationId: string,\n location: GoogleLocation,\n options: NonNullablePaths<UpdateGoogleLocationOptions, `fieldMask`, 2>\n): Promise<\n NonNullablePaths<\n UpdateGoogleLocationResponse,\n | `location.name`\n | `location.title`\n | `location.languageCode`\n | `location.primaryCategory._id`\n | `location.primaryCategory.displayName`\n | `location.additionalCategories`\n | `location.profile.description`\n | `location.storefrontAddress.countryCode`\n | `location.storefrontAddress.postalCode`\n | `location.storefrontAddress.administrativeArea`\n | `location.storefrontAddress.locality`\n | `location.storefrontAddress.addressLines`\n | `location.serviceArea.businessType`\n | `location.serviceArea.places`\n | `location.serviceArea.places.${number}.placeName`\n | `location.serviceArea.places.${number}.placeId`\n | `location.serviceArea.regionCode`\n | `location.primaryPhone`\n | `location.additionalPhones`\n | `location.storeCode`\n | `location.regularHours`\n | `location.regularHours.${number}.openDay`\n | `location.regularHours.${number}.openTime.hours`\n | `location.regularHours.${number}.openTime.minutes`\n | `location.regularHours.${number}.closeDay`\n | `location.latLng.latitude`\n | `location.latLng.longitude`\n | `location.openInfo.status`\n | `location.openInfo.canReopen`\n | `location.metadata.canOperateLodgingData`,\n 6\n > & {\n __applicationErrorsType?: UpdateGoogleLocationApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n location: location,\n fieldMask: options?.fieldMask,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.updateGoogleLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n location: '$[1]',\n fieldMask: '$[2].fieldMask',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'location', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface UpdateGoogleLocationOptions {\n /**\n * The fields to update. Required: there's no inference, so send it explicitly.\n *\n * Only these top-level paths are accepted: `title`, `storeCode`,\n * `primaryPhone`, `additionalPhones`, `primaryCategory`,\n * `additionalCategories`, `storefrontAddress`, `websiteUri`, `regularHours`,\n * `serviceArea`, `latLng`, `openInfo`, `profile`.\n *\n * Paths are checked as sent. An unknown path, a nested one, the wrong case, or\n * an empty mask is rejected as\n * INVALID_UPDATE_MASK before any Google call.\n *\n * Categories replace as a whole. Mask `primaryCategory` and\n * `additionalCategories` together, because a mask naming only one is rejected\n * with `INVALID_UPDATE_MASK`, and send the complete set you want, including a\n * valid `primaryCategory` or the call fails with `INVALID_CATEGORIES`. Google\n * replaces the whole set, so any additional category you want to keep has to be\n * resent or it's deleted.\n *\n * Phone numbers replace as a whole too. Mask `primaryPhone` and\n * `additionalPhones` together, and send the complete set you want. Any\n * additional phone you want to keep has to be resent or it's deleted. Unlike\n * categories, no primary is required, so masking both with none set clears\n * every phone number.\n *\n * Only top-level fields are valid. A nested path such as `serviceArea.places`\n * or `profile.description` is rejected with `INVALID_UPDATE_MASK`. Send the\n * top-level field instead, and Google replaces that whole part of the\n * profile.\n */\n fieldMask: string[];\n}\n\n/**\n * Imports multiple existing Google Business Profile locations.\n *\n * Specify `id` and `accountId` on every location. This doesn't create listings in\n * Google, the same as Create Location.\n *\n * Locations are processed independently: one that fails doesn't stop the others,\n * and its reason is in that item's `itemMetadata.error`. Check the results\n * per item rather than relying on the response status.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * To import a single location, call Create Location.\n * @param locations - The locations to record for this site. Set `id` and `accountId` on each.\n * @public\n * @documentationMaturity preview\n * @requiredField locations\n * @permissionId gbp:location:v1:gbplocation:bulk_create_locations\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.BulkCreateLocations\n */\nexport async function bulkCreateLocations(\n locations: GBPLocation[],\n options?: BulkCreateLocationsOptions\n): Promise<\n NonNullablePaths<\n BulkCreateLocationsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `results.${number}.item._id`\n | `results.${number}.item.accountId`\n | `results.${number}.item.serviceAreaPostalAddress.countryCode`\n | `results.${number}.item.serviceAreaPostalAddress.postalCode`\n | `results.${number}.item.serviceAreaPostalAddress.administrativeArea`\n | `results.${number}.item.serviceAreaPostalAddress.locality`\n | `results.${number}.item.revision`\n | `results.${number}.item.googleLocationId`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n > & {\n __applicationErrorsType?: BulkCreateLocationsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locations: locations,\n returnEntity: options?.returnEntity,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.bulkCreateLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locations: '$[0]',\n returnEntity: '$[1].returnEntity',\n },\n singleArgumentUnchanged: false,\n },\n ['locations', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface BulkCreateLocationsOptions {\n /**\n * Whether to return each created location in `results.item`. Defaults to\n * `false`, which keeps the response small for a large batch.\n */\n returnEntity?: boolean;\n}\n\n/**\n * Deletes multiple GBP locations, leaving their Google Business Profile\n * listings in place.\n *\n * The bulk counterpart of Delete Location, and the same recovery path: use it\n * to clean up stored locations whose listings are already gone from Google or\n * unreachable. To remove the listings from Google too, call Delete Google\n * Location once per location.\n *\n * Locations are processed independently, so one that fails doesn't stop the\n * others. Check the results per location rather than relying on the response\n * status.\n * @param locationIds - IDs of the locations to delete. These are Google's location identifiers.\n * @public\n * @documentationMaturity preview\n * @requiredField locationIds\n * @permissionId gbp:location:v1:gbplocation:bulk_delete_locations\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.BulkDeleteLocations\n */\nexport async function bulkDeleteLocations(\n locationIds: string[]\n): Promise<\n NonNullablePaths<\n BulkDeleteLocationsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationIds: locationIds,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.bulkDeleteLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationIds: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationIds']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves the Google Business Profile accounts the connected Google account\n * can access.\n *\n * A Google account can have access to more than one Business Profile account,\n * each holding its own locations. Use this to find the account ID to specify when\n * importing locations.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n * @public\n * @documentationMaturity preview\n * @permissionId gbp:location:v1:gbplocation:list_gbp_accounts\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListGbpAccounts\n */\nexport async function listGbpAccounts(\n options?: ListGbpAccountsOptions\n): Promise<\n NonNullablePaths<\n ListGbpAccountsResponse,\n | `accounts`\n | `accounts.${number}.accountId`\n | `accounts.${number}.displayName`\n | `accounts.${number}.accountType`,\n 4\n > & {\n __applicationErrorsType?: ListGbpAccountsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n paging: options?.paging,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.listGbpAccounts(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { paging: '$[0].paging' },\n singleArgumentUnchanged: false,\n },\n ['options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListGbpAccountsOptions {\n /**\n * Cursor-based paging. Unset `limit` uses a server default of 20; `cursor`\n * is the `next`/`prev` token returned by a previous response.\n */\n paging?: CursorPaging;\n}\n\n/**\n * Retrieves the locations in a Google Business Profile account that the site\n * hasn't imported yet.\n *\n * Call this before Create Location or Bulk Create Locations to find what's\n * available to import. Locations are returned in the order Google returns them.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n * @param accountId - GBP Account ID to list locations for.\n * @public\n * @documentationMaturity preview\n * @requiredField accountId\n * @permissionId gbp:location:v1:gbplocation:list_unimported_locations\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListUnimportedLocations\n */\nexport async function listUnimportedLocations(\n accountId: string,\n options?: ListUnimportedLocationsOptions\n): Promise<\n NonNullablePaths<\n ListUnimportedLocationsResponse,\n | `locations`\n | `locations.${number}.googleLocationId`\n | `locations.${number}.title`\n | `locations.${number}.storefrontAddress.countryCode`\n | `locations.${number}.storefrontAddress.postalCode`\n | `locations.${number}.storefrontAddress.administrativeArea`\n | `locations.${number}.storefrontAddress.locality`\n | `locations.${number}.serviceArea.businessType`\n | `locations.${number}.serviceArea.regionCode`,\n 5\n > & {\n __applicationErrorsType?: ListUnimportedLocationsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n accountId: accountId,\n paging: options?.paging,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.listUnimportedLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { accountId: '$[0]', paging: '$[1].paging' },\n singleArgumentUnchanged: false,\n },\n ['accountId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListUnimportedLocationsOptions {\n /**\n * Cursor-based paging. Unset `limit` uses a server default of 100; `cursor`\n * is the `next` token returned by a previous response (opaque Google token).\n */\n paging?: CursorPaging;\n}\n\n/**\n * Retrieves a list of up to 100 reviews for a location, given the provided\n * paging and sorting.\n *\n * Reviews belong to Google and can't be created or edited here. You can reply\n * to one with Put Review Reply.\n *\n * Sort with `orderBy`: `NEWEST`, `HIGHEST_RATING` or `LOWEST_RATING`.\n *\n * `metrics` carries the location's average rating and total review count.\n * Those cover every review on the profile, not just the current page.\n * @param locationId - Location ID. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:list_reviews\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListReviews\n */\nexport async function listReviews(\n locationId: string,\n options?: ListReviewsOptions\n): Promise<\n NonNullablePaths<\n ListReviewsResponse,\n | `reviews`\n | `reviews.${number}.reviewId`\n | `reviews.${number}.starRating`\n | `reviews.${number}.comment`\n | `reviews.${number}.createTime`\n | `reviews.${number}.reviewerDisplayName`\n | `reviews.${number}.anonymousReviewer`\n | `reviews.${number}.reply.text`\n | `reviews.${number}.reply.updateTime`\n | `metrics.averageRating`\n | `metrics.totalReviewCount`,\n 5\n > & {\n __applicationErrorsType?: ListReviewsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n orderBy: options?.orderBy,\n paging: options?.paging,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.listReviews(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n orderBy: '$[1].orderBy',\n paging: '$[1].paging',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListReviewsOptions {\n /** Sort order for reviews. */\n orderBy?: ReviewSortOrderWithLiterals;\n /**\n * Cursor-based paging. Unset `limit` uses a server default of 20; `cursor`\n * is the `next` token returned by a previous response (opaque Google token).\n * Google caps `limit` at 50.\n */\n paging?: CursorPaging;\n}\n\n/**\n * Creates or replaces the site owner's public reply to a review.\n *\n * A review has at most one reply, so calling this again replaces the existing\n * text rather than adding a second one. The reply shows publicly on Google\n * next to the review, attributed to the business.\n * @param text - Reply text to post or replace.\n * @public\n * @documentationMaturity preview\n * @requiredField identifiers\n * @requiredField identifiers.locationId\n * @requiredField identifiers.reviewId\n * @requiredField text\n * @permissionId gbp:location:v1:gbplocation:put_review_reply\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.PutReviewReply\n */\nexport async function putReviewReply(\n identifiers: NonNullablePaths<\n PutReviewReplyIdentifiers,\n `locationId` | `reviewId`,\n 2\n >,\n text: string\n): Promise<\n NonNullablePaths<\n PutReviewReplyResponse,\n `reply.text` | `reply.updateTime`,\n 3\n > & {\n __applicationErrorsType?: PutReviewReplyApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: identifiers?.locationId,\n reviewId: identifiers?.reviewId,\n text: text,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.putReviewReply(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0].locationId',\n reviewId: '$[0].reviewId',\n text: '$[1]',\n },\n singleArgumentUnchanged: false,\n },\n ['identifiers', 'text']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface PutReviewReplyIdentifiers {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Google's opaque review ID.\n * @maxLength 255\n */\n reviewId: string;\n}\n\n/**\n * Deletes the site owner's reply to a review.\n *\n * The review itself isn't affected. Reviews belong to Google and can't be\n * deleted through this API.\n * @public\n * @documentationMaturity preview\n * @requiredField identifiers\n * @requiredField identifiers.locationId\n * @requiredField identifiers.reviewId\n * @permissionId gbp:location:v1:gbplocation:delete_review_reply\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.DeleteReviewReply\n */\nexport async function deleteReviewReply(\n identifiers: NonNullablePaths<\n DeleteReviewReplyIdentifiers,\n `locationId` | `reviewId`,\n 2\n >\n): Promise<\n void & {\n __applicationErrorsType?: DeleteReviewReplyApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: identifiers?.locationId,\n reviewId: identifiers?.reviewId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.deleteReviewReply(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0].locationId',\n reviewId: '$[0].reviewId',\n },\n singleArgumentUnchanged: false,\n },\n ['identifiers']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface DeleteReviewReplyIdentifiers {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Google's opaque review ID.\n * @maxLength 255\n */\n reviewId: string;\n}\n\n/**\n * Retrieves a location's media items from Google.\n *\n * Each item includes the media key you need to delete it. Media isn't stored for\n * the site, so this always reflects what's on the Business Profile now.\n *\n * That means it lags behind anything still queued through Bulk Create Media\n * Uploads. If a submission is still being applied, combine this with List Media\n * Uploads to show what the site owner asked for. Count only changes still on\n * their way, since a failed addition never reached Google:\n *\n * ```\n * gallery = this list\n * + additions still PENDING or UPLOADING\n * - removals still PENDING or UPLOADING\n * ```\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param locationId - Location ID. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:list_media\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListMedia\n */\nexport async function listMedia(\n locationId: string,\n options?: ListMediaOptions\n): Promise<\n NonNullablePaths<\n ListMediaResponse,\n | `mediaItems`\n | `mediaItems.${number}.mediaKey`\n | `mediaItems.${number}.format`\n | `mediaItems.${number}.googleUrl`\n | `mediaItems.${number}.category`\n | `mediaItems.${number}.thumbnailUrl`\n | `mediaItems.${number}.description`\n | `mediaItems.${number}.sourceUrl`\n | `mediaItems.${number}.attribution.profileName`\n | `mediaItems.${number}.attribution.profilePhotoUrl`\n | `mediaItems.${number}.attribution.takedownUrl`\n | `mediaItems.${number}.attribution.profileUrl`,\n 5\n > & {\n __applicationErrorsType?: ListMediaApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n paging: options?.paging,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.listMedia(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]', paging: '$[1].paging' },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListMediaOptions {\n /**\n * Cursor-based paging. `limit` maps to Google's page size (unset uses a server\n * default of 100, max 100); `cursor` is the `next` token returned by a previous\n * response (an opaque Google page token).\n */\n paging?: CursorPaging;\n}\n\n/**\n * Adds a media item to a location.\n *\n * Specify `sourceUrl`, a publicly reachable URL that Google fetches the image\n * from. The URL has to stay reachable until Google has fetched it. Returns the\n * created item, including the media key needed to delete it.\n *\n * Two things to plan for:\n *\n * - Google doesn't deduplicate by URL. Calling this twice with the same\n * `sourceUrl` creates two media items, so track what you've already added.\n * - Google allows about 10 edits per minute per Business Profile, and that budget\n * covers every write to the profile: adding and deleting media, but also Update\n * Google Location and Update Location Attributes. Interleaving those with media\n * writes brings the 429 closer, so pace the profile as a whole rather than each\n * method separately. Treat a 429 as worth retrying after a delay rather than as\n * a rejection of the image.\n *\n * This method doesn't pace itself, so use it for single changes. To add several\n * photos at once, call Bulk Create Media Uploads instead. That queues the whole\n * set and applies it to Google gradually, which is what the per-minute budget\n * makes necessary.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param sourceUrl - Publicly accessible URL of the media file to add. Google fetches the bytes\n * from this URL server-side, so it must be reachable without auth.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @requiredField options\n * @requiredField options.category\n * @requiredField options.format\n * @requiredField sourceUrl\n * @permissionId gbp:location:v1:gbplocation:create_media\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.CreateMedia\n */\nexport async function createMedia(\n locationId: string,\n sourceUrl: string,\n options: NonNullablePaths<CreateMediaOptions, `category` | `format`, 2>\n): Promise<\n NonNullablePaths<\n CreateMediaResponse,\n | `mediaItem.mediaKey`\n | `mediaItem.format`\n | `mediaItem.googleUrl`\n | `mediaItem.category`\n | `mediaItem.thumbnailUrl`\n | `mediaItem.description`\n | `mediaItem.sourceUrl`\n | `mediaItem.attribution.profileName`\n | `mediaItem.attribution.profilePhotoUrl`\n | `mediaItem.attribution.takedownUrl`\n | `mediaItem.attribution.profileUrl`,\n 4\n > & {\n __applicationErrorsType?: CreateMediaApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n sourceUrl: sourceUrl,\n category: options?.category,\n format: options?.format,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.createMedia(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n sourceUrl: '$[1]',\n category: '$[2].category',\n format: '$[2].format',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'sourceUrl', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface CreateMediaOptions {\n /** Where the media is shown on the listing (e.g. EXTERIOR, INTERIOR, LOGO). */\n category: MediaCategoryWithLiterals;\n /** PHOTO or VIDEO. */\n format: MediaFormatWithLiterals;\n}\n\n/**\n * Deletes a media item from a location.\n *\n * Specify the media key from List Media. Deleting an item that's already gone\n * succeeds, so it's safe to retry.\n *\n * Deletions draw on the same budget of about 10 edits per minute per Business\n * Profile as every other write to it, including Create Media, Update Google\n * Location and Update Location Attributes. Removing a set of images in quick\n * succession returns 429, so pace the profile as a whole.\n *\n * To remove several photos at once, call Bulk Create Media Uploads with removal\n * items instead. That queues them and applies them gradually.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n *\n * A malformed media key, or one belonging to a different location, also comes\n * back as `GOOGLE_API_CALL_FAILED` rather than `NOT_FOUND`.\n * @public\n * @documentationMaturity preview\n * @requiredField identifiers\n * @requiredField identifiers.locationId\n * @requiredField identifiers.mediaKey\n * @permissionId gbp:location:v1:gbplocation:delete_media\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.DeleteMedia\n */\nexport async function deleteMedia(\n identifiers: NonNullablePaths<\n DeleteMediaIdentifiers,\n `locationId` | `mediaKey`,\n 2\n >\n): Promise<\n void & {\n __applicationErrorsType?: DeleteMediaApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: identifiers?.locationId,\n mediaKey: identifiers?.mediaKey,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.deleteMedia(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0].locationId',\n mediaKey: '$[0].mediaKey',\n },\n singleArgumentUnchanged: false,\n },\n ['identifiers']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface DeleteMediaIdentifiers {\n /**\n * Location ID. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId: string;\n /**\n * Google's opaque media key.\n * @maxLength 255\n */\n mediaKey: string;\n}\n\n/**\n * Replaces a location's food menus on its Business Profile.\n *\n * Not yet implemented. Every call currently fails, so don't build against it\n * until it's announced.\n *\n * When available: specify the complete set of menus the location should end up\n * with in `menuIds`. Menus you leave out are removed, and an empty list removes\n * them all.\n * @param locationId - Location ID. This is Google's location identifier.\n * @internal\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:update_location_food_menus\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.UpdateLocationFoodMenus\n */\nexport async function updateLocationFoodMenus(\n locationId: string,\n options?: UpdateLocationFoodMenusOptions\n): Promise<\n void & {\n __applicationErrorsType?: UpdateLocationFoodMenusApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n menuIds: options?.menuIds,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.updateLocationFoodMenus(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n menuIds: '$[1].menuIds',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface UpdateLocationFoodMenusOptions {\n /**\n * IDs of the Wix menus to publish to Google.\n *\n * This is the complete set: any menu you don't include is removed from\n * Google. An empty list\n * clears all menus on the location.\n *\n * Up to 20 menus.\n * @maxSize 20\n * @format GUID\n */\n menuIds?: string[];\n}\n\n/**\n * Sets or deletes attributes on a location's Business Profile.\n *\n * Only the attributes you specify are affected. Attributes you don't mention are\n * left as they are, so you don't need to resend the whole set.\n *\n * Whether an attribute is set or deleted depends on `valueJson`:\n *\n * - Specify `valueJson` to set the attribute to that value. It takes Google's\n * attribute value JSON, for example `{\"valueType\":\"BOOL\",\"values\":[true]}` or\n * `{\"valueType\":\"URL\",\"uriValues\":[{\"uri\":\"https://example.com\"}]}`. Use the\n * bare attribute key in `attributeId`, such as `has_wifi`.\n * - Leave `valueJson` empty to delete the attribute.\n *\n * There's no flag for clearing everything: to delete several attributes, send one\n * entry per attribute with `valueJson` empty. To delete all of them, first\n * retrieve the location's attributes with Get Location Attributes, then send one\n * empty entry per attribute you get back. At least one entry is always required,\n * and a request carries at most 50, so a location with more than 50 attributes\n * needs more than one call.\n *\n * Call List Attribute Metadata to find which attributes a location supports and\n * what value type each one takes.\n *\n * Errors:\n * - `INVALID_VALUE_JSON`: a `valueJson` isn't valid Google attribute JSON. The\n * response says which entries were wrong, by index and attribute ID. This is\n * checked before anything else, so nothing is changed.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param attributes - The attributes to set or delete, keyed by `attributeId`.\n *\n * Only the attributes you name are touched. Every other attribute on the\n * listing is left alone. An entry with a `valueJson` sets that attribute, and\n * an entry with an empty `valueJson` deletes it.\n * @public\n * @documentationMaturity preview\n * @requiredField attributes\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:update_location_attributes\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.UpdateLocationAttributes\n */\nexport async function updateLocationAttributes(\n locationId: string,\n attributes: LocationAttribute[]\n): Promise<\n NonNullablePaths<\n UpdateLocationAttributesResponse,\n | `attributes`\n | `attributes.${number}.attributeId`\n | `attributes.${number}.valueJson`,\n 4\n > & {\n __applicationErrorsType?: UpdateLocationAttributesApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n attributes: attributes,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.updateLocationAttributes(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]', attributes: '$[1]' },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'attributes']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves the attributes currently set on a location's Business Profile.\n *\n * Returns only the attributes that have a value. To find out which attributes the\n * location could have, call List Attribute Metadata. To change them, call Update\n * Location Attributes.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param locationId - Location ID. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_location_attributes\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetLocationAttributes\n */\nexport async function getLocationAttributes(locationId: string): Promise<\n NonNullablePaths<\n GetLocationAttributesResponse,\n | `attributes`\n | `attributes.${number}.attributeId`\n | `attributes.${number}.valueJson`,\n 4\n > & {\n __applicationErrorsType?: GetLocationAttributesApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getLocationAttributes(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves the hotel data on a location's Business Profile: amenities,\n * policies, accessibility, sustainability practices and per-guest-unit detail.\n *\n * Only meaningful for a lodging business. Every field comes back only if the\n * property has an answer on record, so an unset field means \"not known\", not\n * \"not available\" — `false` is a distinct, deliberate answer.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param locationId - Location ID. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_location_lodging\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetLocationLodging\n */\nexport async function getLocationLodging(locationId: string): Promise<\n NonNullablePaths<\n GetLocationLodgingResponse,\n | `lodging.accessibility.mobilityAccessibleElevatorException`\n | `lodging.accessibility.mobilityAccessibleException`\n | `lodging.accessibility.mobilityAccessibleParkingException`\n | `lodging.accessibility.mobilityAccessiblePoolException`\n | `lodging.activities.beachAccessException`\n | `lodging.activities.beachFrontException`\n | `lodging.activities.bicycleRentalException`\n | `lodging.activities.boutiqueStoresException`\n | `lodging.activities.casinoException`\n | `lodging.activities.freeBicycleRentalException`\n | `lodging.activities.freeWatercraftRentalException`\n | `lodging.activities.gameRoomException`\n | `lodging.activities.golfException`\n | `lodging.activities.horsebackRidingException`\n | `lodging.activities.nightclubException`\n | `lodging.activities.privateBeachException`\n | `lodging.activities.scubaException`\n | `lodging.activities.snorkelingException`\n | `lodging.activities.tennisException`\n | `lodging.activities.waterSkiingException`\n | `lodging.activities.watercraftRentalException`\n | `lodging.allUnits.bungalowOrVillaException`\n | `lodging.allUnits.connectingUnitAvailableException`\n | `lodging.allUnits.executiveFloorException`\n | `lodging.allUnits.maxAdultOccupantsCountException`\n | `lodging.allUnits.maxChildOccupantsCountException`\n | `lodging.allUnits.maxOccupantsCountException`\n | `lodging.allUnits.privateHomeException`\n | `lodging.allUnits.suiteException`\n | `lodging.allUnits.tier`\n | `lodging.allUnits.tierException`\n | `lodging.allUnits.totalLivingAreas.accessibility.adaCompliantUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleDoorbellException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleFireAlarmException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleBathtubException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleShowerException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleToiletException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.eating.coffeeMakerException`\n | `lodging.allUnits.totalLivingAreas.eating.cookwareException`\n | `lodging.allUnits.totalLivingAreas.eating.dishwasherException`\n | `lodging.allUnits.totalLivingAreas.eating.indoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.kettleException`\n | `lodging.allUnits.totalLivingAreas.eating.kitchenAvailableException`\n | `lodging.allUnits.totalLivingAreas.eating.microwaveException`\n | `lodging.allUnits.totalLivingAreas.eating.minibarException`\n | `lodging.allUnits.totalLivingAreas.eating.outdoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.ovenException`\n | `lodging.allUnits.totalLivingAreas.eating.refrigeratorException`\n | `lodging.allUnits.totalLivingAreas.eating.sinkException`\n | `lodging.allUnits.totalLivingAreas.eating.snackbarException`\n | `lodging.allUnits.totalLivingAreas.eating.stoveException`\n | `lodging.allUnits.totalLivingAreas.eating.teaStationException`\n | `lodging.allUnits.totalLivingAreas.eating.toasterException`\n | `lodging.allUnits.totalLivingAreas.features.airConditioningException`\n | `lodging.allUnits.totalLivingAreas.features.bathtubException`\n | `lodging.allUnits.totalLivingAreas.features.bidetException`\n | `lodging.allUnits.totalLivingAreas.features.dryerException`\n | `lodging.allUnits.totalLivingAreas.features.electronicRoomKeyException`\n | `lodging.allUnits.totalLivingAreas.features.fireplaceException`\n | `lodging.allUnits.totalLivingAreas.features.hairdryerException`\n | `lodging.allUnits.totalLivingAreas.features.heatingException`\n | `lodging.allUnits.totalLivingAreas.features.inunitSafeException`\n | `lodging.allUnits.totalLivingAreas.features.inunitWifiAvailableException`\n | `lodging.allUnits.totalLivingAreas.features.ironingEquipmentException`\n | `lodging.allUnits.totalLivingAreas.features.payPerViewMoviesException`\n | `lodging.allUnits.totalLivingAreas.features.privateBathroomException`\n | `lodging.allUnits.totalLivingAreas.features.showerException`\n | `lodging.allUnits.totalLivingAreas.features.toiletException`\n | `lodging.allUnits.totalLivingAreas.features.tvCastingException`\n | `lodging.allUnits.totalLivingAreas.features.tvException`\n | `lodging.allUnits.totalLivingAreas.features.tvStreamingException`\n | `lodging.allUnits.totalLivingAreas.features.universalPowerAdaptersException`\n | `lodging.allUnits.totalLivingAreas.features.washerException`\n | `lodging.allUnits.totalLivingAreas.layout.balconyException`\n | `lodging.allUnits.totalLivingAreas.layout.livingAreaSqMetersException`\n | `lodging.allUnits.totalLivingAreas.layout.loftException`\n | `lodging.allUnits.totalLivingAreas.layout.nonSmokingException`\n | `lodging.allUnits.totalLivingAreas.layout.patioException`\n | `lodging.allUnits.totalLivingAreas.layout.stairsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bunkBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.cribsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.doubleBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.featherPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.hypoallergenicBeddingException`\n | `lodging.allUnits.totalLivingAreas.sleeping.kingBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.memoryFoamPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.otherBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.queenBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.rollAwayBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.singleOrTwinBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.sofaBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.syntheticPillowsException`\n | `lodging.allUnits.views.beachViewException`\n | `lodging.allUnits.views.cityViewException`\n | `lodging.allUnits.views.gardenViewException`\n | `lodging.allUnits.views.lakeViewException`\n | `lodging.allUnits.views.landmarkViewException`\n | `lodging.allUnits.views.oceanViewException`\n | `lodging.allUnits.views.poolViewException`\n | `lodging.allUnits.views.valleyViewException`\n | `lodging.business.businessCenterException`\n | `lodging.business.meetingRoomsCountException`\n | `lodging.business.meetingRoomsException`\n | `lodging.connectivity.freeWifiException`\n | `lodging.connectivity.publicAreaWifiAvailableException`\n | `lodging.connectivity.publicInternetTerminalException`\n | `lodging.connectivity.wifiAvailableException`\n | `lodging.families.babysittingException`\n | `lodging.families.kidsActivitiesException`\n | `lodging.families.kidsClubException`\n | `lodging.families.kidsFriendlyException`\n | `lodging.foodAndDrink.barException`\n | `lodging.foodAndDrink.breakfastAvailableException`\n | `lodging.foodAndDrink.breakfastBuffetException`\n | `lodging.foodAndDrink.buffetException`\n | `lodging.foodAndDrink.dinnerBuffetException`\n | `lodging.foodAndDrink.freeBreakfastException`\n | `lodging.foodAndDrink.restaurantException`\n | `lodging.foodAndDrink.restaurantsCountException`\n | `lodging.foodAndDrink.roomServiceException`\n | `lodging.foodAndDrink.tableServiceException`\n | `lodging.foodAndDrink.twentyFourHourRoomServiceException`\n | `lodging.foodAndDrink.vendingMachineException`\n | `lodging.guestUnits`\n | `lodging.guestUnits.${number}.label`\n | `lodging.healthAndSafety.enhancedCleaning.commercialGradeDisinfectantCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.commonAreasEnhancedCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedCleaningProceduresException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedThoroughHandWashingException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesWearProtectiveEquipmentException`\n | `lodging.healthAndSafety.enhancedCleaning.guestRoomsEnhancedCleaningException`\n | `lodging.healthAndSafety.increasedFoodSafety.diningAreasAdditionalSanitationException`\n | `lodging.healthAndSafety.increasedFoodSafety.disposableFlatwareException`\n | `lodging.healthAndSafety.increasedFoodSafety.foodPreparationAndServingAdditionalSafetyException`\n | `lodging.healthAndSafety.increasedFoodSafety.individualPackagedMealsException`\n | `lodging.healthAndSafety.increasedFoodSafety.singleUseFoodMenusException`\n | `lodging.healthAndSafety.minimizedContact.contactlessCheckinCheckoutException`\n | `lodging.healthAndSafety.minimizedContact.digitalGuestRoomKeysException`\n | `lodging.healthAndSafety.minimizedContact.housekeepingScheduledRequestOnlyException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsCommonAreasException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsGuestRoomsException`\n | `lodging.healthAndSafety.minimizedContact.plasticKeycardsDisinfectedException`\n | `lodging.healthAndSafety.minimizedContact.roomBookingsBufferException`\n | `lodging.healthAndSafety.personalProtection.commonAreasOfferSanitizingItemsException`\n | `lodging.healthAndSafety.personalProtection.faceMaskRequiredException`\n | `lodging.healthAndSafety.personalProtection.guestRoomHygieneKitsAvailableException`\n | `lodging.healthAndSafety.personalProtection.protectiveEquipmentAvailableException`\n | `lodging.healthAndSafety.physicalDistancing.commonAreasPhysicalDistancingArrangedException`\n | `lodging.healthAndSafety.physicalDistancing.physicalDistancingRequiredException`\n | `lodging.healthAndSafety.physicalDistancing.safetyDividersException`\n | `lodging.healthAndSafety.physicalDistancing.sharedAreasLimitedOccupancyException`\n | `lodging.healthAndSafety.physicalDistancing.wellnessAreasHavePrivateSpacesException`\n | `lodging.housekeeping.dailyHousekeepingException`\n | `lodging.housekeeping.housekeepingAvailableException`\n | `lodging.housekeeping.turndownServiceException`\n | `lodging.parking.electricCarChargingStationsException`\n | `lodging.parking.freeParkingException`\n | `lodging.parking.freeSelfParkingException`\n | `lodging.parking.freeValetParkingException`\n | `lodging.parking.parkingAvailableException`\n | `lodging.parking.selfParkingAvailableException`\n | `lodging.parking.valetParkingAvailableException`\n | `lodging.pets.catsAllowedException`\n | `lodging.pets.dogsAllowedException`\n | `lodging.pets.petsAllowedException`\n | `lodging.pets.petsAllowedFreeException`\n | `lodging.policies.allInclusiveAvailableException`\n | `lodging.policies.allInclusiveOnlyException`\n | `lodging.policies.checkinTimeException`\n | `lodging.policies.checkoutTimeException`\n | `lodging.policies.kidsStayFreeException`\n | `lodging.policies.maxChildAgeException`\n | `lodging.policies.maxKidsStayFreeCountException`\n | `lodging.policies.paymentOptions.cashException`\n | `lodging.policies.paymentOptions.chequeException`\n | `lodging.policies.paymentOptions.creditCardException`\n | `lodging.policies.paymentOptions.debitCardException`\n | `lodging.policies.paymentOptions.mobileNfcException`\n | `lodging.policies.smokeFreePropertyException`\n | `lodging.pools.adultPoolException`\n | `lodging.pools.hotTubException`\n | `lodging.pools.indoorPoolException`\n | `lodging.pools.indoorPoolsCountException`\n | `lodging.pools.lazyRiverException`\n | `lodging.pools.lifeguardException`\n | `lodging.pools.outdoorPoolException`\n | `lodging.pools.outdoorPoolsCountException`\n | `lodging.pools.poolException`\n | `lodging.pools.poolsCountException`\n | `lodging.pools.wadingPoolException`\n | `lodging.pools.waterParkException`\n | `lodging.pools.waterslideException`\n | `lodging.pools.wavePoolException`\n | `lodging.property.builtYearException`\n | `lodging.property.floorsCountException`\n | `lodging.property.lastRenovatedYearException`\n | `lodging.property.roomsCountException`\n | `lodging.services.baggageStorageException`\n | `lodging.services.conciergeException`\n | `lodging.services.convenienceStoreException`\n | `lodging.services.currencyExchangeException`\n | `lodging.services.elevatorException`\n | `lodging.services.frontDeskException`\n | `lodging.services.fullServiceLaundryException`\n | `lodging.services.giftShopException`\n | `lodging.services.languagesSpoken`\n | `lodging.services.languagesSpoken.${number}.languageCode`\n | `lodging.services.languagesSpoken.${number}.spokenException`\n | `lodging.services.selfServiceLaundryException`\n | `lodging.services.socialHourException`\n | `lodging.services.twentyFourHourFrontDeskException`\n | `lodging.services.wakeUpCallsException`\n | `lodging.sustainability.energyEfficiency.carbonFreeEnergySourcesException`\n | `lodging.sustainability.energyEfficiency.energyConservationProgramException`\n | `lodging.sustainability.energyEfficiency.energyEfficientHeatingAndCoolingSystemsException`\n | `lodging.sustainability.energyEfficiency.energyEfficientLightingException`\n | `lodging.sustainability.energyEfficiency.energySavingThermostatsException`\n | `lodging.sustainability.energyEfficiency.greenBuildingDesignException`\n | `lodging.sustainability.energyEfficiency.independentOrganizationAuditsEnergyUseException`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertification`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertificationException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.awardedException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.ecoCertificate`\n | `lodging.sustainability.sustainabilityCertifications.leedCertification`\n | `lodging.sustainability.sustainabilityCertifications.leedCertificationException`\n | `lodging.sustainability.sustainableSourcing.ecoFriendlyToiletriesException`\n | `lodging.sustainability.sustainableSourcing.locallySourcedFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.organicCageFreeEggsException`\n | `lodging.sustainability.sustainableSourcing.organicFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.responsiblePurchasingPolicyException`\n | `lodging.sustainability.sustainableSourcing.responsiblySourcesSeafoodException`\n | `lodging.sustainability.sustainableSourcing.veganMealsException`\n | `lodging.sustainability.sustainableSourcing.vegetarianMealsException`\n | `lodging.sustainability.wasteReduction.compostableFoodContainersAndCutleryException`\n | `lodging.sustainability.wasteReduction.compostsExcessFoodException`\n | `lodging.sustainability.wasteReduction.donatesExcessFoodException`\n | `lodging.sustainability.wasteReduction.foodWasteReductionProgramException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticStrawsException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticWaterBottlesException`\n | `lodging.sustainability.wasteReduction.noStyrofoamFoodContainersException`\n | `lodging.sustainability.wasteReduction.recyclingProgramException`\n | `lodging.sustainability.wasteReduction.refillableToiletryContainersException`\n | `lodging.sustainability.wasteReduction.safelyDisposesBatteriesException`\n | `lodging.sustainability.wasteReduction.safelyDisposesElectronicsException`\n | `lodging.sustainability.wasteReduction.safelyDisposesLightbulbsException`\n | `lodging.sustainability.wasteReduction.safelyHandlesHazardousSubstancesException`\n | `lodging.sustainability.wasteReduction.soapDonationProgramException`\n | `lodging.sustainability.wasteReduction.toiletryDonationProgramException`\n | `lodging.sustainability.wasteReduction.waterBottleFillingStationsException`\n | `lodging.sustainability.waterConservation.independentOrganizationAuditsWaterUseException`\n | `lodging.sustainability.waterConservation.linenReuseProgramException`\n | `lodging.sustainability.waterConservation.towelReuseProgramException`\n | `lodging.sustainability.waterConservation.waterSavingShowersException`\n | `lodging.sustainability.waterConservation.waterSavingSinksException`\n | `lodging.sustainability.waterConservation.waterSavingToiletsException`\n | `lodging.transportation.airportShuttleException`\n | `lodging.transportation.carRentalOnPropertyException`\n | `lodging.transportation.freeAirportShuttleException`\n | `lodging.transportation.freePrivateCarServiceException`\n | `lodging.transportation.localShuttleException`\n | `lodging.transportation.privateCarServiceException`\n | `lodging.transportation.transferException`\n | `lodging.wellness.doctorOnCallException`\n | `lodging.wellness.ellipticalMachineException`\n | `lodging.wellness.fitnessCenterException`\n | `lodging.wellness.freeFitnessCenterException`\n | `lodging.wellness.freeWeightsException`\n | `lodging.wellness.massageException`\n | `lodging.wellness.salonException`\n | `lodging.wellness.saunaException`\n | `lodging.wellness.spaException`\n | `lodging.wellness.treadmillException`\n | `lodging.wellness.weightMachineException`,\n 7\n > & {\n __applicationErrorsType?: GetLocationLodgingApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getLocationLodging(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Updates the hotel data on a location's Business Profile.\n *\n * Partial update: only the fields named in `fieldMask` are touched, everything\n * else on the listing is left alone. Paths are the proto field paths and may be\n * nested, so `families` replaces that whole section while `families.kidsClub`\n * changes one amenity.\n *\n * A field named in the mask but left empty in `lodging` clears it — that is how\n * you go from \"we have a pool\" back to \"not known\". To say \"no pool\", send\n * `false` rather than clearing.\n *\n * Repeated fields can only be replaced whole, not edited item by item, so\n * `guestUnits` is a valid path and `guestUnits.codes` is not.\n *\n * Read-only fields (`metadata`, `allUnits`, `someUnits`, and anything Google\n * derives) can't be updated. They're marked read-only on the schema, so naming\n * one in the mask is rejected by request validation.\n *\n * Errors:\n * - `INVALID_UPDATE_MASK`: the mask is empty, or a path doesn't exist or reaches\n * into a repeated field. Google isn't called.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param lodging - The hotel data to set. Only the fields named in `fieldMask` are read, so this\n * can be as sparse as the change you're making.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @requiredField lodging\n * @requiredField options\n * @requiredField options.fieldMask\n * @permissionId gbp:location:v1:gbplocation:update_location_lodging\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.UpdateLocationLodging\n */\nexport async function updateLocationLodging(\n locationId: string,\n lodging: Lodging,\n options: NonNullablePaths<UpdateLocationLodgingOptions, `fieldMask`, 2>\n): Promise<\n NonNullablePaths<\n UpdateLocationLodgingResponse,\n | `lodging.accessibility.mobilityAccessibleElevatorException`\n | `lodging.accessibility.mobilityAccessibleException`\n | `lodging.accessibility.mobilityAccessibleParkingException`\n | `lodging.accessibility.mobilityAccessiblePoolException`\n | `lodging.activities.beachAccessException`\n | `lodging.activities.beachFrontException`\n | `lodging.activities.bicycleRentalException`\n | `lodging.activities.boutiqueStoresException`\n | `lodging.activities.casinoException`\n | `lodging.activities.freeBicycleRentalException`\n | `lodging.activities.freeWatercraftRentalException`\n | `lodging.activities.gameRoomException`\n | `lodging.activities.golfException`\n | `lodging.activities.horsebackRidingException`\n | `lodging.activities.nightclubException`\n | `lodging.activities.privateBeachException`\n | `lodging.activities.scubaException`\n | `lodging.activities.snorkelingException`\n | `lodging.activities.tennisException`\n | `lodging.activities.waterSkiingException`\n | `lodging.activities.watercraftRentalException`\n | `lodging.allUnits.bungalowOrVillaException`\n | `lodging.allUnits.connectingUnitAvailableException`\n | `lodging.allUnits.executiveFloorException`\n | `lodging.allUnits.maxAdultOccupantsCountException`\n | `lodging.allUnits.maxChildOccupantsCountException`\n | `lodging.allUnits.maxOccupantsCountException`\n | `lodging.allUnits.privateHomeException`\n | `lodging.allUnits.suiteException`\n | `lodging.allUnits.tier`\n | `lodging.allUnits.tierException`\n | `lodging.allUnits.totalLivingAreas.accessibility.adaCompliantUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleDoorbellException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleFireAlarmException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleBathtubException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleShowerException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleToiletException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.eating.coffeeMakerException`\n | `lodging.allUnits.totalLivingAreas.eating.cookwareException`\n | `lodging.allUnits.totalLivingAreas.eating.dishwasherException`\n | `lodging.allUnits.totalLivingAreas.eating.indoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.kettleException`\n | `lodging.allUnits.totalLivingAreas.eating.kitchenAvailableException`\n | `lodging.allUnits.totalLivingAreas.eating.microwaveException`\n | `lodging.allUnits.totalLivingAreas.eating.minibarException`\n | `lodging.allUnits.totalLivingAreas.eating.outdoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.ovenException`\n | `lodging.allUnits.totalLivingAreas.eating.refrigeratorException`\n | `lodging.allUnits.totalLivingAreas.eating.sinkException`\n | `lodging.allUnits.totalLivingAreas.eating.snackbarException`\n | `lodging.allUnits.totalLivingAreas.eating.stoveException`\n | `lodging.allUnits.totalLivingAreas.eating.teaStationException`\n | `lodging.allUnits.totalLivingAreas.eating.toasterException`\n | `lodging.allUnits.totalLivingAreas.features.airConditioningException`\n | `lodging.allUnits.totalLivingAreas.features.bathtubException`\n | `lodging.allUnits.totalLivingAreas.features.bidetException`\n | `lodging.allUnits.totalLivingAreas.features.dryerException`\n | `lodging.allUnits.totalLivingAreas.features.electronicRoomKeyException`\n | `lodging.allUnits.totalLivingAreas.features.fireplaceException`\n | `lodging.allUnits.totalLivingAreas.features.hairdryerException`\n | `lodging.allUnits.totalLivingAreas.features.heatingException`\n | `lodging.allUnits.totalLivingAreas.features.inunitSafeException`\n | `lodging.allUnits.totalLivingAreas.features.inunitWifiAvailableException`\n | `lodging.allUnits.totalLivingAreas.features.ironingEquipmentException`\n | `lodging.allUnits.totalLivingAreas.features.payPerViewMoviesException`\n | `lodging.allUnits.totalLivingAreas.features.privateBathroomException`\n | `lodging.allUnits.totalLivingAreas.features.showerException`\n | `lodging.allUnits.totalLivingAreas.features.toiletException`\n | `lodging.allUnits.totalLivingAreas.features.tvCastingException`\n | `lodging.allUnits.totalLivingAreas.features.tvException`\n | `lodging.allUnits.totalLivingAreas.features.tvStreamingException`\n | `lodging.allUnits.totalLivingAreas.features.universalPowerAdaptersException`\n | `lodging.allUnits.totalLivingAreas.features.washerException`\n | `lodging.allUnits.totalLivingAreas.layout.balconyException`\n | `lodging.allUnits.totalLivingAreas.layout.livingAreaSqMetersException`\n | `lodging.allUnits.totalLivingAreas.layout.loftException`\n | `lodging.allUnits.totalLivingAreas.layout.nonSmokingException`\n | `lodging.allUnits.totalLivingAreas.layout.patioException`\n | `lodging.allUnits.totalLivingAreas.layout.stairsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bunkBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.cribsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.doubleBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.featherPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.hypoallergenicBeddingException`\n | `lodging.allUnits.totalLivingAreas.sleeping.kingBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.memoryFoamPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.otherBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.queenBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.rollAwayBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.singleOrTwinBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.sofaBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.syntheticPillowsException`\n | `lodging.allUnits.views.beachViewException`\n | `lodging.allUnits.views.cityViewException`\n | `lodging.allUnits.views.gardenViewException`\n | `lodging.allUnits.views.lakeViewException`\n | `lodging.allUnits.views.landmarkViewException`\n | `lodging.allUnits.views.oceanViewException`\n | `lodging.allUnits.views.poolViewException`\n | `lodging.allUnits.views.valleyViewException`\n | `lodging.business.businessCenterException`\n | `lodging.business.meetingRoomsCountException`\n | `lodging.business.meetingRoomsException`\n | `lodging.connectivity.freeWifiException`\n | `lodging.connectivity.publicAreaWifiAvailableException`\n | `lodging.connectivity.publicInternetTerminalException`\n | `lodging.connectivity.wifiAvailableException`\n | `lodging.families.babysittingException`\n | `lodging.families.kidsActivitiesException`\n | `lodging.families.kidsClubException`\n | `lodging.families.kidsFriendlyException`\n | `lodging.foodAndDrink.barException`\n | `lodging.foodAndDrink.breakfastAvailableException`\n | `lodging.foodAndDrink.breakfastBuffetException`\n | `lodging.foodAndDrink.buffetException`\n | `lodging.foodAndDrink.dinnerBuffetException`\n | `lodging.foodAndDrink.freeBreakfastException`\n | `lodging.foodAndDrink.restaurantException`\n | `lodging.foodAndDrink.restaurantsCountException`\n | `lodging.foodAndDrink.roomServiceException`\n | `lodging.foodAndDrink.tableServiceException`\n | `lodging.foodAndDrink.twentyFourHourRoomServiceException`\n | `lodging.foodAndDrink.vendingMachineException`\n | `lodging.guestUnits`\n | `lodging.guestUnits.${number}.label`\n | `lodging.healthAndSafety.enhancedCleaning.commercialGradeDisinfectantCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.commonAreasEnhancedCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedCleaningProceduresException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedThoroughHandWashingException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesWearProtectiveEquipmentException`\n | `lodging.healthAndSafety.enhancedCleaning.guestRoomsEnhancedCleaningException`\n | `lodging.healthAndSafety.increasedFoodSafety.diningAreasAdditionalSanitationException`\n | `lodging.healthAndSafety.increasedFoodSafety.disposableFlatwareException`\n | `lodging.healthAndSafety.increasedFoodSafety.foodPreparationAndServingAdditionalSafetyException`\n | `lodging.healthAndSafety.increasedFoodSafety.individualPackagedMealsException`\n | `lodging.healthAndSafety.increasedFoodSafety.singleUseFoodMenusException`\n | `lodging.healthAndSafety.minimizedContact.contactlessCheckinCheckoutException`\n | `lodging.healthAndSafety.minimizedContact.digitalGuestRoomKeysException`\n | `lodging.healthAndSafety.minimizedContact.housekeepingScheduledRequestOnlyException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsCommonAreasException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsGuestRoomsException`\n | `lodging.healthAndSafety.minimizedContact.plasticKeycardsDisinfectedException`\n | `lodging.healthAndSafety.minimizedContact.roomBookingsBufferException`\n | `lodging.healthAndSafety.personalProtection.commonAreasOfferSanitizingItemsException`\n | `lodging.healthAndSafety.personalProtection.faceMaskRequiredException`\n | `lodging.healthAndSafety.personalProtection.guestRoomHygieneKitsAvailableException`\n | `lodging.healthAndSafety.personalProtection.protectiveEquipmentAvailableException`\n | `lodging.healthAndSafety.physicalDistancing.commonAreasPhysicalDistancingArrangedException`\n | `lodging.healthAndSafety.physicalDistancing.physicalDistancingRequiredException`\n | `lodging.healthAndSafety.physicalDistancing.safetyDividersException`\n | `lodging.healthAndSafety.physicalDistancing.sharedAreasLimitedOccupancyException`\n | `lodging.healthAndSafety.physicalDistancing.wellnessAreasHavePrivateSpacesException`\n | `lodging.housekeeping.dailyHousekeepingException`\n | `lodging.housekeeping.housekeepingAvailableException`\n | `lodging.housekeeping.turndownServiceException`\n | `lodging.parking.electricCarChargingStationsException`\n | `lodging.parking.freeParkingException`\n | `lodging.parking.freeSelfParkingException`\n | `lodging.parking.freeValetParkingException`\n | `lodging.parking.parkingAvailableException`\n | `lodging.parking.selfParkingAvailableException`\n | `lodging.parking.valetParkingAvailableException`\n | `lodging.pets.catsAllowedException`\n | `lodging.pets.dogsAllowedException`\n | `lodging.pets.petsAllowedException`\n | `lodging.pets.petsAllowedFreeException`\n | `lodging.policies.allInclusiveAvailableException`\n | `lodging.policies.allInclusiveOnlyException`\n | `lodging.policies.checkinTimeException`\n | `lodging.policies.checkoutTimeException`\n | `lodging.policies.kidsStayFreeException`\n | `lodging.policies.maxChildAgeException`\n | `lodging.policies.maxKidsStayFreeCountException`\n | `lodging.policies.paymentOptions.cashException`\n | `lodging.policies.paymentOptions.chequeException`\n | `lodging.policies.paymentOptions.creditCardException`\n | `lodging.policies.paymentOptions.debitCardException`\n | `lodging.policies.paymentOptions.mobileNfcException`\n | `lodging.policies.smokeFreePropertyException`\n | `lodging.pools.adultPoolException`\n | `lodging.pools.hotTubException`\n | `lodging.pools.indoorPoolException`\n | `lodging.pools.indoorPoolsCountException`\n | `lodging.pools.lazyRiverException`\n | `lodging.pools.lifeguardException`\n | `lodging.pools.outdoorPoolException`\n | `lodging.pools.outdoorPoolsCountException`\n | `lodging.pools.poolException`\n | `lodging.pools.poolsCountException`\n | `lodging.pools.wadingPoolException`\n | `lodging.pools.waterParkException`\n | `lodging.pools.waterslideException`\n | `lodging.pools.wavePoolException`\n | `lodging.property.builtYearException`\n | `lodging.property.floorsCountException`\n | `lodging.property.lastRenovatedYearException`\n | `lodging.property.roomsCountException`\n | `lodging.services.baggageStorageException`\n | `lodging.services.conciergeException`\n | `lodging.services.convenienceStoreException`\n | `lodging.services.currencyExchangeException`\n | `lodging.services.elevatorException`\n | `lodging.services.frontDeskException`\n | `lodging.services.fullServiceLaundryException`\n | `lodging.services.giftShopException`\n | `lodging.services.languagesSpoken`\n | `lodging.services.languagesSpoken.${number}.languageCode`\n | `lodging.services.languagesSpoken.${number}.spokenException`\n | `lodging.services.selfServiceLaundryException`\n | `lodging.services.socialHourException`\n | `lodging.services.twentyFourHourFrontDeskException`\n | `lodging.services.wakeUpCallsException`\n | `lodging.sustainability.energyEfficiency.carbonFreeEnergySourcesException`\n | `lodging.sustainability.energyEfficiency.energyConservationProgramException`\n | `lodging.sustainability.energyEfficiency.energyEfficientHeatingAndCoolingSystemsException`\n | `lodging.sustainability.energyEfficiency.energyEfficientLightingException`\n | `lodging.sustainability.energyEfficiency.energySavingThermostatsException`\n | `lodging.sustainability.energyEfficiency.greenBuildingDesignException`\n | `lodging.sustainability.energyEfficiency.independentOrganizationAuditsEnergyUseException`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertification`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertificationException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.awardedException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.ecoCertificate`\n | `lodging.sustainability.sustainabilityCertifications.leedCertification`\n | `lodging.sustainability.sustainabilityCertifications.leedCertificationException`\n | `lodging.sustainability.sustainableSourcing.ecoFriendlyToiletriesException`\n | `lodging.sustainability.sustainableSourcing.locallySourcedFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.organicCageFreeEggsException`\n | `lodging.sustainability.sustainableSourcing.organicFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.responsiblePurchasingPolicyException`\n | `lodging.sustainability.sustainableSourcing.responsiblySourcesSeafoodException`\n | `lodging.sustainability.sustainableSourcing.veganMealsException`\n | `lodging.sustainability.sustainableSourcing.vegetarianMealsException`\n | `lodging.sustainability.wasteReduction.compostableFoodContainersAndCutleryException`\n | `lodging.sustainability.wasteReduction.compostsExcessFoodException`\n | `lodging.sustainability.wasteReduction.donatesExcessFoodException`\n | `lodging.sustainability.wasteReduction.foodWasteReductionProgramException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticStrawsException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticWaterBottlesException`\n | `lodging.sustainability.wasteReduction.noStyrofoamFoodContainersException`\n | `lodging.sustainability.wasteReduction.recyclingProgramException`\n | `lodging.sustainability.wasteReduction.refillableToiletryContainersException`\n | `lodging.sustainability.wasteReduction.safelyDisposesBatteriesException`\n | `lodging.sustainability.wasteReduction.safelyDisposesElectronicsException`\n | `lodging.sustainability.wasteReduction.safelyDisposesLightbulbsException`\n | `lodging.sustainability.wasteReduction.safelyHandlesHazardousSubstancesException`\n | `lodging.sustainability.wasteReduction.soapDonationProgramException`\n | `lodging.sustainability.wasteReduction.toiletryDonationProgramException`\n | `lodging.sustainability.wasteReduction.waterBottleFillingStationsException`\n | `lodging.sustainability.waterConservation.independentOrganizationAuditsWaterUseException`\n | `lodging.sustainability.waterConservation.linenReuseProgramException`\n | `lodging.sustainability.waterConservation.towelReuseProgramException`\n | `lodging.sustainability.waterConservation.waterSavingShowersException`\n | `lodging.sustainability.waterConservation.waterSavingSinksException`\n | `lodging.sustainability.waterConservation.waterSavingToiletsException`\n | `lodging.transportation.airportShuttleException`\n | `lodging.transportation.carRentalOnPropertyException`\n | `lodging.transportation.freeAirportShuttleException`\n | `lodging.transportation.freePrivateCarServiceException`\n | `lodging.transportation.localShuttleException`\n | `lodging.transportation.privateCarServiceException`\n | `lodging.transportation.transferException`\n | `lodging.wellness.doctorOnCallException`\n | `lodging.wellness.ellipticalMachineException`\n | `lodging.wellness.fitnessCenterException`\n | `lodging.wellness.freeFitnessCenterException`\n | `lodging.wellness.freeWeightsException`\n | `lodging.wellness.massageException`\n | `lodging.wellness.salonException`\n | `lodging.wellness.saunaException`\n | `lodging.wellness.spaException`\n | `lodging.wellness.treadmillException`\n | `lodging.wellness.weightMachineException`,\n 7\n > & {\n __applicationErrorsType?: UpdateLocationLodgingApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n lodging: lodging,\n fieldMask: options?.fieldMask,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.updateLocationLodging(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n lodging: '$[1]',\n fieldMask: '$[2].fieldMask',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'lodging', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface UpdateLocationLodgingOptions {\n /**\n * Which fields to update. Nested paths are allowed (`families.kidsClub`); paths\n * into a repeated field are not (`guestUnits` yes, `guestUnits.codes` no), and\n * neither are read-only fields (`metadata`, `allUnits`, `someUnits`).\n *\n * At least one path is required. An empty mask is rejected as\n * `INVALID_UPDATE_MASK` rather than sent on as an empty update.\n */\n fieldMask: string[];\n}\n\n/**\n * Retrieves the attributes a Business Profile can have, with each one's value\n * type, display name and options.\n *\n * Use it to work out what you can send to Update Location Attributes, or to build\n * an editor for a site owner.\n *\n * Specify exactly one of:\n *\n * - `locationId`, for the attributes available to an existing location, based on\n * its category and country.\n * - `categoryRegion`, for the attributes available to a Google category and\n * country. Use this before a location exists, for example while a site owner is\n * still choosing a category. It doesn't need a connected Google account.\n *\n * Errors:\n * - `INVALID_ARGUMENT`: neither or both of the two lookup fields were specified.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @public\n * @documentationMaturity preview\n * @requiredField options.lookup\n * @permissionId gbp:location:v1:gbplocation:list_attribute_metadata\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListAttributeMetadata\n */\nexport async function listAttributeMetadata(\n options?: ListAttributeMetadataOptions\n): Promise<\n NonNullablePaths<\n ListAttributeMetadataResponse,\n | `attributeMetadata`\n | `attributeMetadata.${number}.attributeId`\n | `attributeMetadata.${number}.valueType`\n | `attributeMetadata.${number}.displayName`\n | `attributeMetadata.${number}.groupDisplayName`\n | `attributeMetadata.${number}.repeatable`\n | `attributeMetadata.${number}.deprecated`,\n 4\n > & {\n __applicationErrorsType?: ListAttributeMetadataApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: options?.locationId,\n categoryRegion: options?.categoryRegion,\n languageCode: options?.languageCode,\n paging: options?.paging,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.listAttributeMetadata(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0].locationId',\n categoryRegion: '$[0].categoryRegion',\n languageCode: '$[0].languageCode',\n paging: '$[0].paging',\n },\n singleArgumentUnchanged: false,\n },\n ['options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListAttributeMetadataOptions\n extends ListAttributeMetadataOptionsLookupOneOf {\n /**\n * ID of the location. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId?: string;\n /**\n * A Google category + country pair, for previewing attributes before a\n * location exists.\n */\n categoryRegion?: CategoryRegion;\n /**\n * BCP-47 language code for localized display names. If unset, Google falls\n * back to English. Optional.\n * @maxLength 35\n */\n languageCode?: string;\n /**\n * Cursor-based paging. `limit` maps to Google's page size (unset uses a\n * server default of 200, min 1); `cursor` is the `next` token returned by a\n * previous response (an opaque Google page token).\n */\n paging?: CursorPaging;\n}\n\n/** @oneof */\nexport interface ListAttributeMetadataOptionsLookupOneOf {\n /**\n * ID of the location. This is Google's location identifier.\n * @minLength 1\n * @maxLength 255\n */\n locationId?: string;\n /**\n * A Google category + country pair, for previewing attributes before a\n * location exists.\n */\n categoryRegion?: CategoryRegion;\n}\n\n/**\n * Retrieves Google's catalog of business categories.\n *\n * Use it to let a site owner choose a primary or additional category before\n * creating or updating a location. Each returned `id` can be assigned directly\n * to a category on the location.\n *\n * The catalog is the same for everyone, so results don't depend on the\n * location. `locationId` is optional and selects whose Google credentials the\n * catalog is read with, not which categories come back. Send it when you\n * already have a location, and leave it out before one exists, for example in\n * a create-location flow.\n *\n * `searchTerm` matches against the category's localized display name. Pass a\n * plain term rather than a query expression. Leave it out to page through the\n * whole catalog.\n *\n * Errors:\n * - `NOT_FOUND`: `locationId` was set but the location isn't recorded for this\n * site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: Google returned an error. Its HTTP status is in\n * the error data.\n * @param regionCode - ISO 3166-1 alpha-2 country code (e.g. \"US\") the catalog is scoped to.\n * Categories differ per country, so this is required.\n * @public\n * @documentationMaturity preview\n * @requiredField options.languageCode\n * @requiredField regionCode\n * @permissionId gbp:location:v1:gbplocation:list_categories\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListCategories\n */\nexport async function listCategories(\n regionCode: string,\n options?: NonNullablePaths<ListCategoriesOptions, `languageCode`, 2>\n): Promise<\n NonNullablePaths<\n ListCategoriesResponse,\n | `categories`\n | `categories.${number}._id`\n | `categories.${number}.displayName`,\n 4\n > & {\n __applicationErrorsType?: ListCategoriesApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n regionCode: regionCode,\n languageCode: options?.languageCode,\n searchTerm: options?.searchTerm,\n view: options?.view,\n paging: options?.paging,\n locationId: options?.locationId,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.listCategories(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n regionCode: '$[0]',\n languageCode: '$[1].languageCode',\n searchTerm: '$[1].searchTerm',\n view: '$[1].view',\n paging: '$[1].paging',\n locationId: '$[1].locationId',\n },\n singleArgumentUnchanged: false,\n },\n ['regionCode', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListCategoriesOptions {\n /**\n * Language to return the category display names in, as a BCP-47 code such as\n * `he` or `fr`. Required.\n * @minLength 1\n * @maxLength 35\n */\n languageCode: string;\n /**\n * Term to match against the category display name. Pass a plain term rather\n * than a query expression. Leave it out to page through the whole catalog.\n * @maxLength 255\n */\n searchTerm?: string;\n /** How much of each category to return. Unset behaves as BASIC. */\n view?: CategoryViewWithLiterals;\n /**\n * Cursor-based paging. `limit` maps to Google's page size (unset uses a\n * server default of 100, min 1, max 100); `cursor` is the `next` token\n * returned by a previous response (an opaque Google page token).\n */\n paging?: CursorPaging;\n /**\n * Optional. Whose Google credentials to read the catalog with. This isn't a\n * filter: the catalog is the same for everyone, so it doesn't change which\n * categories come back.\n *\n * Send it when you already have a location, so the read counts against that\n * site owner's own Google quota. Leave it out before any location exists, for\n * example in a create-location flow.\n * @maxLength 255\n */\n locationId?: string;\n}\n\n/**\n * Retrieves the ways a location can be verified.\n *\n * Google decides which options a location is eligible for, and each option\n * says what it needs. Call this before Start Verification to find out what to\n * offer the site owner.\n *\n * For a service-area business, save `serviceAreaPostalAddress` on the location\n * first with Update Location. Google can't work out the options without it.\n * @param locationId - Location ID. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_verification_options\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetVerificationOptions\n */\nexport async function getVerificationOptions(locationId: string): Promise<\n NonNullablePaths<\n GetVerificationOptionsResponse,\n `options` | `options.${number}.method` | `options.${number}.displayData`,\n 4\n > & {\n __applicationErrorsType?: GetVerificationOptionsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getVerificationOptions(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Starts verifying a location with Google.\n *\n * Call Get Verification Options first to find out which methods Google allows for\n * the location, then specify one here.\n *\n * For `ADDRESS`, `EMAIL`, `PHONE_CALL` and `SMS`, Google sends a PIN to the site\n * owner. Pass it to Complete Verification to finish.\n *\n * For `AUTO`, Google verifies the location itself. There's no PIN and no second\n * call, and `verificationState` comes back as `VERIFIED` straight away.\n *\n * `VERIFIED` is narrower than it sounds. It means the location has business\n * authority and has entered Google's quality review. It does not mean the profile\n * is live and trusted: for that, check `hasVoiceOfMerchant` with Get Voice Of\n * Merchant. A location can be verified and still not be publicly visible.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param method - Verification method chosen by the merchant.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @requiredField method\n * @permissionId gbp:location:v1:gbplocation:start_verification\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.StartVerification\n */\nexport async function startVerification(\n locationId: string,\n method: VerificationMethodWithLiterals,\n options?: StartVerificationOptions\n): Promise<\n NonNullablePaths<\n StartVerificationResponse,\n `pendingVerificationId` | `verificationState`,\n 2\n > & {\n __applicationErrorsType?: StartVerificationApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n method: method,\n methodInput: options?.methodInput,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.startVerification(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n method: '$[1]',\n methodInput: '$[2].methodInput',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'method', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface StartVerificationOptions {\n /**\n * Input the chosen method needs, such as the email address for email\n * verification, or the phone number for a call or SMS.\n * @maxLength 255\n */\n methodInput?: string;\n}\n\n/**\n * Completes a verification by submitting the PIN Google sent.\n *\n * Specify the `pendingVerificationId` from Start Verification and the `pin`\n * the site owner received by the method they chose.\n *\n * Verification succeeding doesn't on its own mean the profile is live on\n * Google. Call Get Voice Of Merchant to check that.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param pin - The PIN the site owner received by the method they chose.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @requiredField options\n * @requiredField options.pendingVerificationId\n * @requiredField pin\n * @permissionId gbp:location:v1:gbplocation:complete_verification\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.CompleteVerification\n */\nexport async function completeVerification(\n locationId: string,\n pin: string,\n options: NonNullablePaths<\n CompleteVerificationOptions,\n `pendingVerificationId`,\n 2\n >\n): Promise<\n NonNullablePaths<CompleteVerificationResponse, `verificationState`, 2> & {\n __applicationErrorsType?: CompleteVerificationApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n pin: pin,\n pendingVerificationId: options?.pendingVerificationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.completeVerification(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n pin: '$[1]',\n pendingVerificationId: '$[2].pendingVerificationId',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'pin', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface CompleteVerificationOptions {\n /**\n * The `pendingVerificationId` that Start Verification returned for this\n * verification. Store it between starting and completing, which can span\n * sessions.\n * @minLength 1\n * @maxLength 255\n */\n pendingVerificationId: string;\n}\n\n/**\n * Retrieves whether Google considers a location's profile trusted and live.\n *\n * Google calls this Voice of Merchant. A location can be verified and still\n * not have it, so check this before telling a site owner their profile is\n * live.\n *\n * `state` says what's needed next, such as waiting, verifying, complying with\n * Google's guidelines, or resolving who owns the listing.\n * @param locationId - Location ID. This is Google's location identifier.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_voice_of_merchant\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetVoiceOfMerchant\n */\nexport async function getVoiceOfMerchant(\n locationId: string\n): Promise<\n NonNullablePaths<\n GetVoiceOfMerchantResponse,\n | `voiceOfMerchant.hasVoiceOfMerchant`\n | `voiceOfMerchant.hasBusinessAuthority`\n | `voiceOfMerchant.state`\n | `voiceOfMerchant.recommendationReason`\n | `voiceOfMerchant.hasPendingVerification`,\n 3\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getVoiceOfMerchant(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves daily performance metrics for a location.\n *\n * Covers how people found and used the profile: impressions on Google Search\n * and Maps split by desktop and mobile, and actions such as calls, direction\n * requests, website clicks, messages, and bookings.\n *\n * Specify the metrics you want in `metricTypes` and the window in\n * `timeRange`. Each returned metric carries its own daily series, so ask only\n * for the ones you'll use.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param timeRange - Time range for the insights query.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @requiredField options\n * @requiredField options.metricTypes\n * @requiredField timeRange\n * @permissionId gbp:location:v1:gbplocation:get_location_insights\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetLocationInsights\n */\nexport async function getLocationInsights(\n locationId: string,\n timeRange: InsightsTimeRange,\n options: NonNullablePaths<GetLocationInsightsOptions, `metricTypes`, 2>\n): Promise<\n NonNullablePaths<\n GetLocationInsightsResponse,\n `metrics` | `metrics.${number}.metricType` | `metrics.${number}.totalValue`,\n 4\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n timeRange: timeRange,\n metricTypes: options?.metricTypes,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getLocationInsights(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n timeRange: '$[1]',\n metricTypes: '$[2].metricTypes',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'timeRange', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface GetLocationInsightsOptions {\n /**\n * Daily metrics to fetch. One InsightsMetric is returned per requested metric.\n * Bounded by the number of DailyMetric values.\n * @maxSize 11\n */\n metricTypes: DailyMetricWithLiterals[];\n}\n\n/**\n * Retrieves a list of up to 100 search terms people used to find a location,\n * by calendar month.\n *\n * Each term carries either `value`, the exact number of impressions, or\n * `threshold`, meaning the real count is below that number and Google won't\n * report it precisely. Check which one is set rather than assuming a count.\n *\n * Search terms are what real people typed, so treat `searchKeyword` as\n * possibly containing personal information.\n * @param locationId - Location ID. This is Google's location identifier.\n * @param monthlyRange - Inclusive calendar-month range to query.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @requiredField monthlyRange\n * @permissionId gbp:location:v1:gbplocation:list_search_keyword_impressions\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.ListSearchKeywordImpressions\n */\nexport async function listSearchKeywordImpressions(\n locationId: string,\n monthlyRange: MonthlyRange,\n options?: ListSearchKeywordImpressionsOptions\n): Promise<\n NonNullablePaths<\n ListSearchKeywordImpressionsResponse,\n | `keywordImpressions`\n | `keywordImpressions.${number}.value`\n | `keywordImpressions.${number}.threshold`\n | `keywordImpressions.${number}.searchKeyword`,\n 4\n > & {\n __applicationErrorsType?: ListSearchKeywordImpressionsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n monthlyRange: monthlyRange,\n paging: options?.paging,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.listSearchKeywordImpressions(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n monthlyRange: '$[1]',\n paging: '$[2].paging',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'monthlyRange', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListSearchKeywordImpressionsOptions {\n /** Cursor-based paging. Unset `limit` uses 100; Google's maximum is 100. */\n paging?: CursorPaging;\n}\n\n/**\n * Invites a Google account to manage a location's Business Profile.\n *\n * Specify the `email` of the Google account to invite and the `role` to grant.\n * The invitation has to be accepted by that account before it takes effect.\n * Until then it appears in Get Location Admins with `pendingInvitation` set to\n * `true`.\n *\n * An account that already manages the location isn't invited again, so calling\n * this twice is safe.\n * @param locationId - Location ID (Google's opaque location id) to invite the account to manage.\n * @param email - The email of the Google account to invite as a manager. PII.\n * @public\n * @documentationMaturity preview\n * @requiredField email\n * @requiredField locationId\n * @requiredField options\n * @requiredField options.role\n * @permissionId gbp:location:v1:gbplocation:invite_admin_to_location\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.InviteAdminToLocation\n */\nexport async function inviteAdminToLocation(\n locationId: string,\n email: string,\n options: NonNullablePaths<InviteAdminToLocationOptions, `role`, 2>\n): Promise<InviteAdminToLocationResponse> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n email: email,\n role: options?.role,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.inviteAdminToLocation(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n locationId: '$[0]',\n email: '$[1]',\n role: '$[2].role',\n },\n singleArgumentUnchanged: false,\n },\n ['locationId', 'email', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface InviteAdminToLocationOptions {\n /** The role to assign to the invited account. */\n role: RoleWithLiterals;\n}\n\n/**\n * Retrieves the accounts that manage a location's Business Profile, including\n * invitations that haven't been accepted yet.\n *\n * Use it to check who already has access before inviting someone, because\n * Google rejects an invitation for an account that already manages the\n * location.\n * @param locationId - Location ID (Google's opaque location id) to list admins for.\n * @public\n * @documentationMaturity preview\n * @requiredField locationId\n * @permissionId gbp:location:v1:gbplocation:get_location_admins\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetLocationAdmins\n */\nexport async function getLocationAdmins(\n locationId: string\n): Promise<\n NonNullablePaths<\n GetLocationAdminsResponse,\n | `locationAdmins`\n | `locationAdmins.${number}._id`\n | `locationAdmins.${number}.googleLocationId`\n | `locationAdmins.${number}.accountResourceName`\n | `locationAdmins.${number}.role`\n | `locationAdmins.${number}.pendingInvitation`,\n 4\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n locationId: locationId,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getLocationAdmins(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: { locationId: '$[0]' },\n singleArgumentUnchanged: false,\n },\n ['locationId']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\n/**\n * Retrieves how to render an address form for a country.\n *\n * Tells you which address fields to show and in what order, which are\n * required, the administrative areas to offer such as states or provinces, and\n * what to label each field in that country.\n *\n * This is public reference data, so it needs no connected Google account and\n * no existing location. Call it before collecting an address, for example\n * while creating a location.\n * @param countryCode - ISO 3166-1 alpha-2 country code (e.g. \"US\", \"UA\", \"KR\").\n * @public\n * @documentationMaturity preview\n * @requiredField countryCode\n * @permissionId gbp:location:v1:gbplocation:get_address_schema_by_country_code\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.GetAddressSchemaByCountryCode\n */\nexport async function getAddressSchemaByCountryCode(\n countryCode: string,\n options?: GetAddressSchemaByCountryCodeOptions\n): Promise<\n NonNullablePaths<\n GetAddressSchemaByCountryCodeResponse,\n | `schema.countryCode`\n | `schema.fields`\n | `schema.requiredFields`\n | `schema.administrativeAreas`\n | `schema.postalFormat`\n | `schema.languages`\n | `schema.administrativeAreaType`\n | `schema.localityType`\n | `schema.subLocalityType`\n | `schema.postalCodeType`,\n 3\n > & {\n __applicationErrorsType?: GetAddressSchemaByCountryCodeApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n countryCode: countryCode,\n locale: options?.locale,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.getAddressSchemaByCountryCode(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n countryCode: '$[0]',\n locale: '$[1].locale',\n },\n singleArgumentUnchanged: false,\n },\n ['countryCode', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface GetAddressSchemaByCountryCodeOptions {\n /**\n * Optional BCP-47 locale (e.g. \"fr\", \"en\"). Selects the language variant for\n * administrative-area names and triggers Google's secondary-language dataset\n * for countries that publish one. Defaults to \"en\" when empty.\n * @maxLength 35\n */\n locale?: string;\n}\n\n/**\n * Retrieves region suggestions for partial text, for autocompleting a city,\n * state or region as someone types.\n *\n * Only places of that kind come back. Street addresses and businesses never\n * do, so use Suggest Establishments to autocomplete a business name.\n *\n * Needs no connected Google account and no existing location. Text shorter\n * than 3 characters returns an empty list rather than an error, so you can\n * call it on every keystroke.\n * @param query - Partial free-text the end-user is typing (e.g. \"new y\"). Sent per debounced\n * keystroke; Google returns region/city predictions matching this prefix.\n * Queries shorter than 3 chars return an empty list (handled server-side),\n * not an error.\n * @public\n * @documentationMaturity preview\n * @requiredField options.countryCode\n * @requiredField query\n * @permissionId gbp:location:v1:gbplocation:suggest_regions\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.SuggestRegions\n */\nexport async function suggestRegions(\n query: string,\n options?: NonNullablePaths<SuggestRegionsOptions, `countryCode`, 2>\n): Promise<\n NonNullablePaths<\n SuggestRegionsResponse,\n | `suggestions`\n | `suggestions.${number}.placeId`\n | `suggestions.${number}.description`\n | `suggestions.${number}.mainText`\n | `suggestions.${number}.secondaryText`,\n 4\n > & {\n __applicationErrorsType?: SuggestRegionsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n query: query,\n countryCode: options?.countryCode,\n languageCode: options?.languageCode,\n });\n\n const reqOpts = ambassadorWixGbpLocationV1Gbplocation.suggestRegions(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n query: '$[0]',\n countryCode: '$[1].countryCode',\n languageCode: '$[1].languageCode',\n },\n singleArgumentUnchanged: false,\n },\n ['query', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface SuggestRegionsOptions {\n /**\n * ISO 3166-1 alpha-2 country to restrict results to (e.g. \"US\").\n * @format COUNTRY\n */\n countryCode: string;\n /**\n * Optional BCP-47 language for the returned names (e.g. \"fr\"). Defaults to\n * Google's behavior (typically the account/region language) when empty.\n * @maxLength 35\n */\n languageCode?: string;\n}\n\n/**\n * Retrieves business suggestions for partial text, for autocompleting a\n * business name as someone types.\n *\n * Only existing businesses come back. Regions and street addresses never do,\n * so use Suggest Regions for those. Use this to find and prefill the business\n * a site owner wants to claim.\n *\n * Needs no connected Google account and no existing location. Text shorter\n * than 3 characters returns an empty list rather than an error.\n *\n * `countryCode` is optional here, unlike Suggest Regions: business names are\n * searched worldwide unless you narrow them.\n * @param query - Partial free-text the end-user is typing (e.g. \"acme hard\"). Sent per\n * debounced keystroke; Google returns business-name predictions matching\n * this prefix. Queries shorter than 3 chars return an empty list\n * (handled server-side), not an error.\n * @public\n * @documentationMaturity preview\n * @requiredField query\n * @permissionId gbp:location:v1:gbplocation:suggest_establishments\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.SuggestEstablishments\n */\nexport async function suggestEstablishments(\n query: string,\n options?: SuggestEstablishmentsOptions\n): Promise<\n NonNullablePaths<\n SuggestEstablishmentsResponse,\n | `suggestions`\n | `suggestions.${number}.placeId`\n | `suggestions.${number}.description`\n | `suggestions.${number}.mainText`\n | `suggestions.${number}.secondaryText`,\n 4\n > & {\n __applicationErrorsType?: SuggestEstablishmentsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n query: query,\n countryCode: options?.countryCode,\n languageCode: options?.languageCode,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.suggestEstablishments(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n query: '$[0]',\n countryCode: '$[1].countryCode',\n languageCode: '$[1].languageCode',\n },\n singleArgumentUnchanged: false,\n },\n ['query', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface SuggestEstablishmentsOptions {\n /**\n * Optional ISO 3166-1 alpha-2 country to restrict results to (e.g. \"US\").\n * Unlike SuggestRegions, business search is unrestricted when omitted.\n * @format COUNTRY\n */\n countryCode?: string | null;\n /**\n * Optional BCP-47 language for the returned names (e.g. \"fr\"). Defaults to\n * Google's behavior (typically the account/region language) when empty.\n * @maxLength 35\n */\n languageCode?: string;\n}\n\n/**\n * Searches Google's Business Profile catalog for existing listings.\n *\n * Specify either a free-text query or a title and address. Each result is a real\n * catalog entry, and carries a `matchStatus` saying whether it can be claimed.\n *\n * This doesn't need a connected Google account, so you can call it before the\n * site owner connects one, for example to check whether a business already has a\n * listing.\n *\n * Read `matchStatus` carefully, because it's about the catalog rather than about\n * the site owner:\n *\n * - `CLAIMABLE`: no Google account has claimed this listing.\n * - `OWNED_ELSEWHERE`: some Google account has claimed it. That account may well\n * be the site owner's own, so don't present this as someone else's listing.\n * Confirm ownership by connecting their account and calling List Unimported\n * Locations.\n *\n * For lighter-weight suggestions while someone types, call Suggest\n * Establishments, which returns autocomplete hints rather than catalog entries.\n * @public\n * @documentationMaturity preview\n * @requiredField options\n * @requiredField options.criteria\n * @permissionId gbp:location:v1:gbplocation:search_google_locations\n * @applicableIdentity APP\n * @fqn wix.gbp.location.v1.GbpLocationsService.SearchGoogleLocations\n */\nexport async function searchGoogleLocations(\n options: SearchGoogleLocationsOptions\n): Promise<\n NonNullablePaths<\n SearchGoogleLocationsResponse,\n | `matches`\n | `matches.${number}.location.name`\n | `matches.${number}.location.title`\n | `matches.${number}.location.languageCode`\n | `matches.${number}.location.primaryCategory._id`\n | `matches.${number}.location.primaryCategory.displayName`\n | `matches.${number}.location.profile.description`\n | `matches.${number}.location.storefrontAddress.countryCode`\n | `matches.${number}.location.storefrontAddress.postalCode`\n | `matches.${number}.location.storefrontAddress.administrativeArea`\n | `matches.${number}.location.storefrontAddress.locality`\n | `matches.${number}.location.serviceArea.businessType`\n | `matches.${number}.location.serviceArea.regionCode`\n | `matches.${number}.location.primaryPhone`\n | `matches.${number}.location.storeCode`\n | `matches.${number}.location.latLng.latitude`\n | `matches.${number}.location.latLng.longitude`\n | `matches.${number}.location.openInfo.status`\n | `matches.${number}.location.openInfo.canReopen`\n | `matches.${number}.location.metadata.canOperateLodgingData`\n | `matches.${number}.status`,\n 6\n > & {\n __applicationErrorsType?: SearchGoogleLocationsApplicationErrors;\n }\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n query: options?.query,\n location: options?.location,\n });\n\n const reqOpts =\n ambassadorWixGbpLocationV1Gbplocation.searchGoogleLocations(payload);\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n query: '$[0].query',\n location: '$[0].location',\n },\n singleArgumentUnchanged: false,\n },\n ['options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface SearchGoogleLocationsOptions\n extends SearchGoogleLocationsOptionsCriteriaOneOf {\n /**\n * Free-text search (business name, optionally with an address), e.g.\n * \"Acme Hardware, Main St\". Maps to googleLocations:search {query}.\n * @minLength 1\n * @maxLength 200\n */\n query?: string;\n /**\n * Structured search built from data the merchant already entered. Maps to\n * googleLocations:search {location}. Only the fields Google matches on\n * (title, address) are meaningful; the rest are ignored for search.\n */\n location?: GoogleLocation;\n}\n\n/** @oneof */\nexport interface SearchGoogleLocationsOptionsCriteriaOneOf {\n /**\n * Free-text search (business name, optionally with an address), e.g.\n * \"Acme Hardware, Main St\". Maps to googleLocations:search {query}.\n * @minLength 1\n * @maxLength 200\n */\n query?: string;\n /**\n * Structured search built from data the merchant already entered. Maps to\n * googleLocations:search {location}. Only the fields Google matches on\n * (title, address) are meaningful; the rest are ignored for search.\n */\n location?: GoogleLocation;\n}\n","import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules';\nimport { transformSDKFloatToRESTFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformRESTFloatToSDKFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformSDKTimestampToRESTTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformRESTTimestampToSDKTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformSDKFieldMaskToRESTFieldMask } from '@wix/sdk-runtime/transformations/field-mask';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveWixGbpLocationV1GbpLocationsServiceUrl(\n opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n const domainToMappings = {\n 'bo._base_domain_': [\n {\n srcPath: '/_api/gbp-location-service',\n destPath: '',\n },\n ],\n 'wixbo.ai': [\n {\n srcPath: '/_api/gbp-location-service',\n destPath: '',\n },\n ],\n 'wix-bo.com': [\n {\n srcPath: '/_api/gbp-location-service',\n destPath: '',\n },\n ],\n 'manage._base_domain_': [\n {\n srcPath: '/_api/gbp-location-service',\n destPath: '',\n },\n ],\n 'www.wixapis.com': [\n {\n srcPath: '/gbp/v1/accounts',\n destPath: '/v1/accounts',\n },\n {\n srcPath: '/gbp/v1/address-schema',\n destPath: '/v1/address-schema',\n },\n {\n srcPath: '/gbp/v1/attribute-metadata',\n destPath: '/v1/attribute-metadata',\n },\n {\n srcPath: '/gbp/v1/bulk',\n destPath: '/v1/bulk',\n },\n {\n srcPath: '/gbp/v1/establishments',\n destPath: '/v1/establishments',\n },\n {\n srcPath: '/gbp/v1/google-locations',\n destPath: '/v1/google-locations',\n },\n {\n srcPath: '/gbp/v1/locations',\n destPath: '/v1/locations',\n },\n {\n srcPath: '/gbp/v1/regions',\n destPath: '/v1/regions',\n },\n {\n srcPath: '/gbp/v1/categories',\n destPath: '/v1/categories',\n },\n {\n srcPath: '/gbp/location/v1/categories',\n destPath: '/v1/categories',\n },\n {\n srcPath: '/gbp/location/v1/accounts',\n destPath: '/v1/accounts',\n },\n {\n srcPath: '/gbp/location/v1/address-schema',\n destPath: '/v1/address-schema',\n },\n {\n srcPath: '/gbp/location/v1/attribute-metadata',\n destPath: '/v1/attribute-metadata',\n },\n {\n srcPath: '/gbp/location/v1/bulk',\n destPath: '/v1/bulk',\n },\n {\n srcPath: '/gbp/location/v1/establishments',\n destPath: '/v1/establishments',\n },\n {\n srcPath: '/gbp/location/v1/google-locations',\n destPath: '/v1/google-locations',\n },\n {\n srcPath: '/gbp/location/v1/locations',\n destPath: '/v1/locations',\n },\n {\n srcPath: '/gbp/location/v1/regions',\n destPath: '/v1/regions',\n },\n ],\n 'www._base_domain_': [\n {\n srcPath: '/gbp/location/v1/locations',\n destPath: '/v1/locations',\n },\n ],\n };\n\n return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_gbp_locations';\n\n/**\n * Retrieves a GBP location as it's stored for the site.\n *\n * This doesn't call Google, so it's the cheapest way to check whether a\n * location is recorded and to read its `accountId` or\n * `serviceAreaPostalAddress`. To get the live Google profile as well, call\n * Get Google Location.\n */\nexport function getGbpLocation(payload: object): RequestOptionsFactory<any> {\n function __getGbpLocation({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.GetGBPLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'gbplocation.createdDate' },\n { path: 'gbplocation.updatedDate' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __getGbpLocation;\n}\n\n/**\n * Retrieves a list of up to 100 GBP locations, given the provided paging,\n * filtering, and sorting.\n *\n * Returns the site's stored locations. It doesn't call Google, so the response\n * contains identifiers and stored metadata rather than live profile data. To\n * retrieve the same locations with their current Google data, call Query Google\n * Locations.\n *\n * Supported properties for filtering and sorting: `id`, `googleLocationId`,\n * `accountId`.\n *\n * To learn about working with Query methods, see\n * [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language),\n * [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging),\n * and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection).\n */\nexport function queryGbpLocations(payload: object): RequestOptionsFactory<any> {\n function __queryGbpLocations({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.QueryGBPLocations',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/query',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload, true),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'locations.createdDate' },\n { path: 'locations.updatedDate' },\n ],\n },\n ]),\n fallback: [\n {\n method: 'POST' as any,\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/query',\n data: payload,\n host,\n }),\n data: payload,\n },\n ],\n };\n\n return metadata;\n }\n\n return __queryGbpLocations;\n}\n\n/**\n * Retrieves a list of up to 100 GBP locations with their current Google data,\n * given the provided paging, filtering, and sorting.\n *\n * Takes the same filters as Query GBP Locations, and additionally retrieves each\n * location's live profile data from Google: title, address, opening hours and so\n * on. Use it when you need both the stored identifiers and the current profile\n * in one call.\n *\n * A location whose Google data can't be retrieved is still returned, with the\n * reason in that location's `googleError`. The call as a whole succeeds and\n * paging is unaffected, so check `googleError` per location rather than relying\n * on the response status.\n *\n * Supported properties for filtering and sorting: `id`, `googleLocationId`,\n * `accountId`.\n *\n * To learn about working with Query methods, see\n * [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language),\n * [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging),\n * and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection).\n */\nexport function queryGoogleLocations(\n payload: object\n): RequestOptionsFactory<any> {\n function __queryGoogleLocations({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.QueryGoogleLocations',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/query-with-google',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload, true),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'locations.googleLocation.latLng.latitude' },\n { path: 'locations.googleLocation.latLng.longitude' },\n ],\n },\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'locations.location.createdDate' },\n { path: 'locations.location.updatedDate' },\n ],\n },\n ]),\n fallback: [\n {\n method: 'POST' as any,\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/query-with-google',\n data: payload,\n host,\n }),\n data: payload,\n },\n ],\n };\n\n return metadata;\n }\n\n return __queryGoogleLocations;\n}\n\n/**\n * Retrieves a GBP location with its current Google data.\n *\n * The single-location counterpart of Query Google Locations, with the same\n * behavior: if the profile data can't be retrieved from Google, the location is\n * still returned and the reason is in `googleError`.\n *\n * If the location isn't found, the call fails and Google isn't contacted.\n */\nexport function getGoogleLocation(payload: object): RequestOptionsFactory<any> {\n function __getGoogleLocation({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.GetGoogleLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/google/{locationId}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'location.googleLocation.latLng.latitude' },\n { path: 'location.googleLocation.latLng.longitude' },\n ],\n },\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'location.location.createdDate' },\n { path: 'location.location.updatedDate' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __getGoogleLocation;\n}\n\n/**\n * Imports an existing Google Business Profile location.\n *\n * Specify the Google account ID in `accountId` and the Google location ID in\n * `location.id`. Both are available from List Unimported Locations.\n *\n * This doesn't create a listing in Google. It records a location the Google\n * account already has, so that the site can manage it. To create a new listing,\n * call Create Google Location.\n *\n * A Google account must be connected first, or the call fails with\n * `CONNECTION_NOT_FOUND`. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n */\nexport function createLocation(payload: object): RequestOptionsFactory<any> {\n function __createLocation({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'location.createdDate' },\n { path: 'location.updatedDate' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.CreateLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'location.createdDate' },\n { path: 'location.updatedDate' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __createLocation;\n}\n\n/**\n * Updates a GBP location's stored fields.\n *\n * This doesn't change anything on the Google Business Profile. Only fields the\n * GBP location itself stores can be updated: `serviceAreaPostalAddress`, and\n * `feedEntityId` if it doesn't have a value yet. Naming a Google-owned field in\n * `fieldMask` has no effect. To change the profile in Google, call Update Google\n * Location.\n *\n * List the fields to change in `fieldMask`.\n */\nexport function updateLocation(payload: object): RequestOptionsFactory<any> {\n function __updateLocation({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFieldMaskToRESTFieldMask,\n paths: [{ path: 'fieldMask' }],\n },\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'location.createdDate' },\n { path: 'location.updatedDate' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'PATCH' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.UpdateLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{location.id}',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'location.createdDate' },\n { path: 'location.updatedDate' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __updateLocation;\n}\n\n/**\n * Deletes a GBP location, leaving the Google Business Profile listing in place.\n *\n * This is the recovery path, for when the listing is already gone from Google, or\n * is unreachable, and the stored location needs cleaning up. For the usual\n * delete, which removes the listing from Google too, call Delete Google Location.\n */\nexport function deleteLocation(payload: object): RequestOptionsFactory<any> {\n function __deleteLocation({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'DELETE' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.DeleteLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __deleteLocation;\n}\n\n/**\n * Creates a Business Profile listing in Google and records it for the site.\n *\n * Use this to add a location the Google account doesn't have yet. To record a\n * listing that already exists, call Create Location instead.\n *\n * Specify at least one of `storefrontAddress` or `serviceArea`. If neither is set,\n * the call fails with `INVALID_LOCATION_PAYLOAD`.\n *\n * Both can be set together when `serviceArea.businessType` is\n * `CUSTOMER_AND_BUSINESS_LOCATION`, which is how a business that has premises and\n * also travels to customers is represented.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * Set `validateOnly` to check the details without creating anything: Google\n * runs the same validation and returns the same errors, but no listing is\n * created and none is recorded for the site. On success the response has no\n * `location` — that absence is what \"valid\" looks like.\n *\n * Errors:\n * - `CONNECTION_NOT_FOUND`: no Google account is connected. Google isn't called.\n * - `TOKEN_RESOLUTION_FAILED`: the stored credentials couldn't be used. Google\n * isn't called and nothing is created.\n * - `GOOGLE_LOCATION_VALIDATION_FAILED`: Google rejected the details, for\n * example an invalid phone number or address, or a listing that needs a\n * postcard PIN. The specific reasons are in the error payload, and they're\n * worth surfacing: they tell the site owner what to correct. Nothing is\n * created.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed for any other reason.\n * Google's status and response are in the error payload. Nothing is created.\n * - `LOCATION_DB_PERSIST_FAILED`: Google created the listing but it couldn't be\n * recorded for the site. The new Google location ID is in the error payload,\n * so keep it: the listing exists in Google and can be recorded with Create\n * Location, or removed with Delete Google Location.\n */\nexport function createGoogleLocation(\n payload: object\n): RequestOptionsFactory<any> {\n function __createGoogleLocation({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'location.latLng.latitude' },\n { path: 'location.latLng.longitude' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.CreateGoogleLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/google',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'location.createdDate' },\n { path: 'location.updatedDate' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __createGoogleLocation;\n}\n\n/**\n * Deletes a Business Profile listing from Google and removes it from the site.\n *\n * This is the usual way to delete a location. To remove a location from the site\n * while leaving the Google listing alone, call Delete Location.\n *\n * Google refuses to delete some listings through its API, including verified or\n * claimed listings, chain-managed locations, and suspended ones. Those have to be\n * removed by the site owner at business.google.com.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `LOCATION_NOT_DELETABLE_VIA_API`: Google won't allow the delete, for one of\n * the reasons above. The location is left in place. Note this is checked before\n * the delete, and Google's answer can change in between, so a delete can still\n * fail after the check passed.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. The location is left in\n * place so the call can be retried. If Google keeps refusing, remove the\n * listing at business.google.com and then call Delete Location.\n * - `LOCATION_DB_PERSIST_FAILED`: Google deleted the listing but the site's copy\n * couldn't be removed. Call Delete Location to finish the job.\n */\nexport function deleteGoogleLocation(\n payload: object\n): RequestOptionsFactory<any> {\n function __deleteGoogleLocation({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'DELETE' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.DeleteGoogleLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/google/{locationId}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __deleteGoogleLocation;\n}\n\n/**\n * Updates a location's Business Profile in Google.\n *\n * This changes the profile the public sees on Google. It doesn't change the\n * location stored for the site: to update `serviceAreaPostalAddress`, call Update\n * Location.\n *\n * `fieldMask` is required, and only these top-level fields can be updated:\n * `title`, `storeCode`, `primaryPhone`, `additionalPhones`, `primaryCategory`,\n * `additionalCategories`, `storefrontAddress`, `websiteUri`, `regularHours`,\n * `serviceArea`, `latLng`, `openInfo`, `profile`.\n *\n * Anything else, including a nested path such as `profile.description` or an\n * empty mask, fails with `INVALID_UPDATE_MASK` before Google is called.\n * `languageCode` can't be updated: Google treats it as read-only.\n *\n * ## Categories and phone numbers replace the whole set\n *\n * Google doesn't allow categories or phone numbers to be updated one at a time,\n * so each pair behaves as a single value and Google replaces everything in it.\n * Read this before updating either, because omitting a value deletes it.\n *\n * For categories:\n *\n * - Specify `primaryCategory` and `additionalCategories` together in `fieldMask`.\n * A mask with only one of them fails with `INVALID_UPDATE_MASK`.\n * - Specify the complete set you want the location to end up with, including a\n * primary category. A set without one fails with `INVALID_CATEGORIES`.\n * - Any additional category you leave out is removed, so resend the ones you want\n * to keep.\n *\n * For phone numbers:\n *\n * - Specify `primaryPhone` and `additionalPhones` together in `fieldMask`. A mask\n * with only one of them fails with `INVALID_UPDATE_MASK`.\n * - Specify the complete set of numbers you want the location to end up with. Any\n * number you leave out is removed.\n * - Unlike categories, no primary is required. Masking both and specifying none\n * removes every phone number.\n *\n * ## Errors\n *\n * - `INVALID_UPDATE_MASK`: the mask is empty, or names a field that can't be\n * updated, or masks only one half of the categories or phone numbers pair.\n * Google isn't called.\n * - `GOOGLE_LOCATION_VALIDATION_FAILED`: Google rejected the details, for example\n * an invalid phone number or address, or a listing that needs a postcard PIN.\n * The specific reasons are in the error payload and are worth surfacing: they\n * tell the site owner what to correct.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed for any other reason.\n * Google's status and response are in the error payload.\n */\nexport function updateGoogleLocation(\n payload: object\n): RequestOptionsFactory<any> {\n function __updateGoogleLocation({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFieldMaskToRESTFieldMask,\n paths: [{ path: 'fieldMask' }],\n },\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'location.latLng.latitude' },\n { path: 'location.latLng.longitude' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'PATCH' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.UpdateGoogleLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/google',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'location.latLng.latitude' },\n { path: 'location.latLng.longitude' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __updateGoogleLocation;\n}\n\n/**\n * Imports multiple existing Google Business Profile locations.\n *\n * Specify `id` and `accountId` on every location. This doesn't create listings in\n * Google, the same as Create Location.\n *\n * Locations are processed independently: one that fails doesn't stop the others,\n * and its reason is in that item's `itemMetadata.error`. Check the results\n * per item rather than relying on the response status.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * To import a single location, call Create Location.\n */\nexport function bulkCreateLocations(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkCreateLocations({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [\n { path: 'locations.createdDate' },\n { path: 'locations.updatedDate' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.BulkCreateLocations',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/bulk/locations/create',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [\n { path: 'results.item.createdDate' },\n { path: 'results.item.updatedDate' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __bulkCreateLocations;\n}\n\n/**\n * Deletes multiple GBP locations, leaving their Google Business Profile\n * listings in place.\n *\n * The bulk counterpart of Delete Location, and the same recovery path: use it\n * to clean up stored locations whose listings are already gone from Google or\n * unreachable. To remove the listings from Google too, call Delete Google\n * Location once per location.\n *\n * Locations are processed independently, so one that fails doesn't stop the\n * others. Check the results per location rather than relying on the response\n * status.\n */\nexport function bulkDeleteLocations(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkDeleteLocations({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.BulkDeleteLocations',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/bulk/locations/delete',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __bulkDeleteLocations;\n}\n\n/**\n * Retrieves the Google Business Profile accounts the connected Google account\n * can access.\n *\n * A Google account can have access to more than one Business Profile account,\n * each holding its own locations. Use this to find the account ID to specify when\n * importing locations.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n */\nexport function listGbpAccounts(payload: object): RequestOptionsFactory<any> {\n function __listGbpAccounts({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.ListGbpAccounts',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/accounts',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __listGbpAccounts;\n}\n\n/**\n * Retrieves the locations in a Google Business Profile account that the site\n * hasn't imported yet.\n *\n * Call this before Create Location or Bulk Create Locations to find what's\n * available to import. Locations are returned in the order Google returns them.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n */\nexport function listUnimportedLocations(\n payload: object\n): RequestOptionsFactory<any> {\n function __listUnimportedLocations({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.ListUnimportedLocations',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/accounts/{accountId}/locations/unimported',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __listUnimportedLocations;\n}\n\n/**\n * Retrieves a list of up to 100 reviews for a location, given the provided\n * paging and sorting.\n *\n * Reviews belong to Google and can't be created or edited here. You can reply\n * to one with Put Review Reply.\n *\n * Sort with `orderBy`: `NEWEST`, `HIGHEST_RATING` or `LOWEST_RATING`.\n *\n * `metrics` carries the location's average rating and total review count.\n * Those cover every review on the profile, not just the current page.\n */\nexport function listReviews(payload: object): RequestOptionsFactory<any> {\n function __listReviews({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.ListReviews',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/reviews',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [{ path: 'metrics.averageRating' }],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __listReviews;\n}\n\n/**\n * Creates or replaces the site owner's public reply to a review.\n *\n * A review has at most one reply, so calling this again replaces the existing\n * text rather than adding a second one. The reply shows publicly on Google\n * next to the review, attributed to the business.\n */\nexport function putReviewReply(payload: object): RequestOptionsFactory<any> {\n function __putReviewReply({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'PUT' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.PutReviewReply',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/reviews/{reviewId}/reply',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __putReviewReply;\n}\n\n/**\n * Deletes the site owner's reply to a review.\n *\n * The review itself isn't affected. Reviews belong to Google and can't be\n * deleted through this API.\n */\nexport function deleteReviewReply(payload: object): RequestOptionsFactory<any> {\n function __deleteReviewReply({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'DELETE' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.DeleteReviewReply',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/reviews/{reviewId}/reply',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __deleteReviewReply;\n}\n\n/**\n * Retrieves a location's media items from Google.\n *\n * Each item includes the media key you need to delete it. Media isn't stored for\n * the site, so this always reflects what's on the Business Profile now.\n *\n * That means it lags behind anything still queued through Bulk Create Media\n * Uploads. If a submission is still being applied, combine this with List Media\n * Uploads to show what the site owner asked for. Count only changes still on\n * their way, since a failed addition never reached Google:\n *\n * ```\n * gallery = this list\n * + additions still PENDING or UPLOADING\n * - removals still PENDING or UPLOADING\n * ```\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function listMedia(payload: object): RequestOptionsFactory<any> {\n function __listMedia({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.ListMedia',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/media',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __listMedia;\n}\n\n/**\n * Adds a media item to a location.\n *\n * Specify `sourceUrl`, a publicly reachable URL that Google fetches the image\n * from. The URL has to stay reachable until Google has fetched it. Returns the\n * created item, including the media key needed to delete it.\n *\n * Two things to plan for:\n *\n * - Google doesn't deduplicate by URL. Calling this twice with the same\n * `sourceUrl` creates two media items, so track what you've already added.\n * - Google allows about 10 edits per minute per Business Profile, and that budget\n * covers every write to the profile: adding and deleting media, but also Update\n * Google Location and Update Location Attributes. Interleaving those with media\n * writes brings the 429 closer, so pace the profile as a whole rather than each\n * method separately. Treat a 429 as worth retrying after a delay rather than as\n * a rejection of the image.\n *\n * This method doesn't pace itself, so use it for single changes. To add several\n * photos at once, call Bulk Create Media Uploads instead. That queues the whole\n * set and applies it to Google gradually, which is what the per-minute budget\n * makes necessary.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function createMedia(payload: object): RequestOptionsFactory<any> {\n function __createMedia({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.CreateMedia',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/media',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __createMedia;\n}\n\n/**\n * Deletes a media item from a location.\n *\n * Specify the media key from List Media. Deleting an item that's already gone\n * succeeds, so it's safe to retry.\n *\n * Deletions draw on the same budget of about 10 edits per minute per Business\n * Profile as every other write to it, including Create Media, Update Google\n * Location and Update Location Attributes. Removing a set of images in quick\n * succession returns 429, so pace the profile as a whole.\n *\n * To remove several photos at once, call Bulk Create Media Uploads with removal\n * items instead. That queues them and applies them gradually.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n *\n * A malformed media key, or one belonging to a different location, also comes\n * back as `GOOGLE_API_CALL_FAILED` rather than `NOT_FOUND`.\n */\nexport function deleteMedia(payload: object): RequestOptionsFactory<any> {\n function __deleteMedia({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'DELETE' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.DeleteMedia',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/media/{mediaKey}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __deleteMedia;\n}\n\n/**\n * Replaces a location's food menus on its Business Profile.\n *\n * Not yet implemented. Every call currently fails, so don't build against it\n * until it's announced.\n *\n * When available: specify the complete set of menus the location should end up\n * with in `menuIds`. Menus you leave out are removed, and an empty list removes\n * them all.\n */\nexport function updateLocationFoodMenus(\n payload: object\n): RequestOptionsFactory<any> {\n function __updateLocationFoodMenus({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'PATCH' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.UpdateLocationFoodMenus',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/food-menus',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __updateLocationFoodMenus;\n}\n\n/**\n * Sets or deletes attributes on a location's Business Profile.\n *\n * Only the attributes you specify are affected. Attributes you don't mention are\n * left as they are, so you don't need to resend the whole set.\n *\n * Whether an attribute is set or deleted depends on `valueJson`:\n *\n * - Specify `valueJson` to set the attribute to that value. It takes Google's\n * attribute value JSON, for example `{\"valueType\":\"BOOL\",\"values\":[true]}` or\n * `{\"valueType\":\"URL\",\"uriValues\":[{\"uri\":\"https://example.com\"}]}`. Use the\n * bare attribute key in `attributeId`, such as `has_wifi`.\n * - Leave `valueJson` empty to delete the attribute.\n *\n * There's no flag for clearing everything: to delete several attributes, send one\n * entry per attribute with `valueJson` empty. To delete all of them, first\n * retrieve the location's attributes with Get Location Attributes, then send one\n * empty entry per attribute you get back. At least one entry is always required,\n * and a request carries at most 50, so a location with more than 50 attributes\n * needs more than one call.\n *\n * Call List Attribute Metadata to find which attributes a location supports and\n * what value type each one takes.\n *\n * Errors:\n * - `INVALID_VALUE_JSON`: a `valueJson` isn't valid Google attribute JSON. The\n * response says which entries were wrong, by index and attribute ID. This is\n * checked before anything else, so nothing is changed.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function updateLocationAttributes(\n payload: object\n): RequestOptionsFactory<any> {\n function __updateLocationAttributes({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'PATCH' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.UpdateLocationAttributes',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/attributes',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __updateLocationAttributes;\n}\n\n/**\n * Retrieves the attributes currently set on a location's Business Profile.\n *\n * Returns only the attributes that have a value. To find out which attributes the\n * location could have, call List Attribute Metadata. To change them, call Update\n * Location Attributes.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function getLocationAttributes(\n payload: object\n): RequestOptionsFactory<any> {\n function __getLocationAttributes({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.GetLocationAttributes',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/attributes',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __getLocationAttributes;\n}\n\n/**\n * Retrieves the hotel data on a location's Business Profile: amenities,\n * policies, accessibility, sustainability practices and per-guest-unit detail.\n *\n * Only meaningful for a lodging business. Every field comes back only if the\n * property has an answer on record, so an unset field means \"not known\", not\n * \"not available\" — `false` is a distinct, deliberate answer.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function getLocationLodging(\n payload: object\n): RequestOptionsFactory<any> {\n function __getLocationLodging({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.GetLocationLodging',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/lodging',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n {\n path: 'lodging.allUnits.totalLivingAreas.layout.livingAreaSqMeters',\n },\n { path: 'lodging.commonLivingArea.layout.livingAreaSqMeters' },\n {\n path: 'lodging.guestUnits.features.totalLivingAreas.layout.livingAreaSqMeters',\n },\n {\n path: 'lodging.someUnits.totalLivingAreas.layout.livingAreaSqMeters',\n },\n ],\n },\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [{ path: 'lodging.metadata.updateTime' }],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __getLocationLodging;\n}\n\n/**\n * Updates the hotel data on a location's Business Profile.\n *\n * Partial update: only the fields named in `fieldMask` are touched, everything\n * else on the listing is left alone. Paths are the proto field paths and may be\n * nested, so `families` replaces that whole section while `families.kidsClub`\n * changes one amenity.\n *\n * A field named in the mask but left empty in `lodging` clears it — that is how\n * you go from \"we have a pool\" back to \"not known\". To say \"no pool\", send\n * `false` rather than clearing.\n *\n * Repeated fields can only be replaced whole, not edited item by item, so\n * `guestUnits` is a valid path and `guestUnits.codes` is not.\n *\n * Read-only fields (`metadata`, `allUnits`, `someUnits`, and anything Google\n * derives) can't be updated. They're marked read-only on the schema, so naming\n * one in the mask is rejected by request validation.\n *\n * Errors:\n * - `INVALID_UPDATE_MASK`: the mask is empty, or a path doesn't exist or reaches\n * into a repeated field. Google isn't called.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function updateLocationLodging(\n payload: object\n): RequestOptionsFactory<any> {\n function __updateLocationLodging({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFieldMaskToRESTFieldMask,\n paths: [{ path: 'fieldMask' }],\n },\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n {\n path: 'lodging.allUnits.totalLivingAreas.layout.livingAreaSqMeters',\n },\n { path: 'lodging.commonLivingArea.layout.livingAreaSqMeters' },\n {\n path: 'lodging.guestUnits.features.totalLivingAreas.layout.livingAreaSqMeters',\n },\n {\n path: 'lodging.someUnits.totalLivingAreas.layout.livingAreaSqMeters',\n },\n ],\n },\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [{ path: 'lodging.metadata.updateTime' }],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'PATCH' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.UpdateLocationLodging',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/lodging',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n {\n path: 'lodging.allUnits.totalLivingAreas.layout.livingAreaSqMeters',\n },\n { path: 'lodging.commonLivingArea.layout.livingAreaSqMeters' },\n {\n path: 'lodging.guestUnits.features.totalLivingAreas.layout.livingAreaSqMeters',\n },\n {\n path: 'lodging.someUnits.totalLivingAreas.layout.livingAreaSqMeters',\n },\n ],\n },\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [{ path: 'lodging.metadata.updateTime' }],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __updateLocationLodging;\n}\n\n/**\n * Retrieves the attributes a Business Profile can have, with each one's value\n * type, display name and options.\n *\n * Use it to work out what you can send to Update Location Attributes, or to build\n * an editor for a site owner.\n *\n * Specify exactly one of:\n *\n * - `locationId`, for the attributes available to an existing location, based on\n * its category and country.\n * - `categoryRegion`, for the attributes available to a Google category and\n * country. Use this before a location exists, for example while a site owner is\n * still choosing a category. It doesn't need a connected Google account.\n *\n * Errors:\n * - `INVALID_ARGUMENT`: neither or both of the two lookup fields were specified.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\nexport function listAttributeMetadata(\n payload: object\n): RequestOptionsFactory<any> {\n function __listAttributeMetadata({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.ListAttributeMetadata',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/attribute-metadata',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [{ path: 'attributeMetadata.valueMetadata.numberValue' }],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __listAttributeMetadata;\n}\n\n/**\n * Retrieves Google's catalog of business categories.\n *\n * Use it to let a site owner choose a primary or additional category before\n * creating or updating a location. Each returned `id` can be assigned directly\n * to a category on the location.\n *\n * The catalog is the same for everyone, so results don't depend on the\n * location. `locationId` is optional and selects whose Google credentials the\n * catalog is read with, not which categories come back. Send it when you\n * already have a location, and leave it out before one exists, for example in\n * a create-location flow.\n *\n * `searchTerm` matches against the category's localized display name. Pass a\n * plain term rather than a query expression. Leave it out to page through the\n * whole catalog.\n *\n * Errors:\n * - `NOT_FOUND`: `locationId` was set but the location isn't recorded for this\n * site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: Google returned an error. Its HTTP status is in\n * the error data.\n */\nexport function listCategories(payload: object): RequestOptionsFactory<any> {\n function __listCategories({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.ListCategories',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/categories',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __listCategories;\n}\n\n/**\n * Retrieves the ways a location can be verified.\n *\n * Google decides which options a location is eligible for, and each option\n * says what it needs. Call this before Start Verification to find out what to\n * offer the site owner.\n *\n * For a service-area business, save `serviceAreaPostalAddress` on the location\n * first with Update Location. Google can't work out the options without it.\n */\nexport function getVerificationOptions(\n payload: object\n): RequestOptionsFactory<any> {\n function __getVerificationOptions({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.GetVerificationOptions',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}:getVerificationOptions',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __getVerificationOptions;\n}\n\n/**\n * Starts verifying a location with Google.\n *\n * Call Get Verification Options first to find out which methods Google allows for\n * the location, then specify one here.\n *\n * For `ADDRESS`, `EMAIL`, `PHONE_CALL` and `SMS`, Google sends a PIN to the site\n * owner. Pass it to Complete Verification to finish.\n *\n * For `AUTO`, Google verifies the location itself. There's no PIN and no second\n * call, and `verificationState` comes back as `VERIFIED` straight away.\n *\n * `VERIFIED` is narrower than it sounds. It means the location has business\n * authority and has entered Google's quality review. It does not mean the profile\n * is live and trusted: for that, check `hasVoiceOfMerchant` with Get Voice Of\n * Merchant. A location can be verified and still not be publicly visible.\n */\nexport function startVerification(payload: object): RequestOptionsFactory<any> {\n function __startVerification({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.StartVerification',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}:startVerification',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __startVerification;\n}\n\n/**\n * Completes a verification by submitting the PIN Google sent.\n *\n * Specify the `pendingVerificationId` from Start Verification and the `pin`\n * the site owner received by the method they chose.\n *\n * Verification succeeding doesn't on its own mean the profile is live on\n * Google. Call Get Voice Of Merchant to check that.\n */\nexport function completeVerification(\n payload: object\n): RequestOptionsFactory<any> {\n function __completeVerification({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.CompleteVerification',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}:completeVerification',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __completeVerification;\n}\n\n/**\n * Retrieves whether Google considers a location's profile trusted and live.\n *\n * Google calls this Voice of Merchant. A location can be verified and still\n * not have it, so check this before telling a site owner their profile is\n * live.\n *\n * `state` says what's needed next, such as waiting, verifying, complying with\n * Google's guidelines, or resolving who owns the listing.\n */\nexport function getVoiceOfMerchant(\n payload: object\n): RequestOptionsFactory<any> {\n function __getVoiceOfMerchant({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.GetVoiceOfMerchant',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/voice-of-merchant',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __getVoiceOfMerchant;\n}\n\n/**\n * Retrieves daily performance metrics for a location.\n *\n * Covers how people found and used the profile: impressions on Google Search\n * and Maps split by desktop and mobile, and actions such as calls, direction\n * requests, website clicks, messages, and bookings.\n *\n * Specify the metrics you want in `metricTypes` and the window in\n * `timeRange`. Each returned metric carries its own daily series, so ask only\n * for the ones you'll use.\n */\nexport function getLocationInsights(\n payload: object\n): RequestOptionsFactory<any> {\n function __getLocationInsights({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKTimestampToRESTTimestamp,\n paths: [{ path: 'timeRange.startDate' }, { path: 'timeRange.endDate' }],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.GetLocationInsights',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/insights',\n data: serializedData,\n host,\n }),\n params: toURLSearchParams(serializedData),\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTTimestampToSDKTimestamp,\n paths: [{ path: 'metrics.dailyValues.date' }],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __getLocationInsights;\n}\n\n/**\n * Retrieves a list of up to 100 search terms people used to find a location,\n * by calendar month.\n *\n * Each term carries either `value`, the exact number of impressions, or\n * `threshold`, meaning the real count is below that number and Google won't\n * report it precisely. Check which one is set rather than assuming a count.\n *\n * Search terms are what real people typed, so treat `searchKeyword` as\n * possibly containing personal information.\n */\nexport function listSearchKeywordImpressions(\n payload: object\n): RequestOptionsFactory<any> {\n function __listSearchKeywordImpressions({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.ListSearchKeywordImpressions',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/search-keyword-impressions',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __listSearchKeywordImpressions;\n}\n\n/**\n * Invites a Google account to manage a location's Business Profile.\n *\n * Specify the `email` of the Google account to invite and the `role` to grant.\n * The invitation has to be accepted by that account before it takes effect.\n * Until then it appears in Get Location Admins with `pendingInvitation` set to\n * `true`.\n *\n * An account that already manages the location isn't invited again, so calling\n * this twice is safe.\n */\nexport function inviteAdminToLocation(\n payload: object\n): RequestOptionsFactory<any> {\n function __inviteAdminToLocation({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.InviteAdminToLocation',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/invite-admin',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __inviteAdminToLocation;\n}\n\n/**\n * Retrieves the accounts that manage a location's Business Profile, including\n * invitations that haven't been accepted yet.\n *\n * Use it to check who already has access before inviting someone, because\n * Google rejects an invitation for an account that already manages the\n * location.\n */\nexport function getLocationAdmins(payload: object): RequestOptionsFactory<any> {\n function __getLocationAdmins({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.GetLocationAdmins',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/locations/{locationId}/admins',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __getLocationAdmins;\n}\n\n/**\n * Retrieves how to render an address form for a country.\n *\n * Tells you which address fields to show and in what order, which are\n * required, the administrative areas to offer such as states or provinces, and\n * what to label each field in that country.\n *\n * This is public reference data, so it needs no connected Google account and\n * no existing location. Call it before collecting an address, for example\n * while creating a location.\n */\nexport function getAddressSchemaByCountryCode(\n payload: object\n): RequestOptionsFactory<any> {\n function __getAddressSchemaByCountryCode({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'GET' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.GetAddressSchemaByCountryCode',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/address-schema/{countryCode}',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __getAddressSchemaByCountryCode;\n}\n\n/**\n * Retrieves region suggestions for partial text, for autocompleting a city,\n * state or region as someone types.\n *\n * Only places of that kind come back. Street addresses and businesses never\n * do, so use Suggest Establishments to autocomplete a business name.\n *\n * Needs no connected Google account and no existing location. Text shorter\n * than 3 characters returns an empty list rather than an error, so you can\n * call it on every keystroke.\n */\nexport function suggestRegions(payload: object): RequestOptionsFactory<any> {\n function __suggestRegions({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn: 'wix.gbp.location.v1.GbpLocationsService.SuggestRegions',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/regions/suggest',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __suggestRegions;\n}\n\n/**\n * Retrieves business suggestions for partial text, for autocompleting a\n * business name as someone types.\n *\n * Only existing businesses come back. Regions and street addresses never do,\n * so use Suggest Regions for those. Use this to find and prefill the business\n * a site owner wants to claim.\n *\n * Needs no connected Google account and no existing location. Text shorter\n * than 3 characters returns an empty list rather than an error.\n *\n * `countryCode` is optional here, unlike Suggest Regions: business names are\n * searched worldwide unless you narrow them.\n */\nexport function suggestEstablishments(\n payload: object\n): RequestOptionsFactory<any> {\n function __suggestEstablishments({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.SuggestEstablishments',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/establishments/suggest',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __suggestEstablishments;\n}\n\n/**\n * Searches Google's Business Profile catalog for existing listings.\n *\n * Specify either a free-text query or a title and address. Each result is a real\n * catalog entry, and carries a `matchStatus` saying whether it can be claimed.\n *\n * This doesn't need a connected Google account, so you can call it before the\n * site owner connects one, for example to check whether a business already has a\n * listing.\n *\n * Read `matchStatus` carefully, because it's about the catalog rather than about\n * the site owner:\n *\n * - `CLAIMABLE`: no Google account has claimed this listing.\n * - `OWNED_ELSEWHERE`: some Google account has claimed it. That account may well\n * be the site owner's own, so don't present this as someone else's listing.\n * Confirm ownership by connecting their account and calling List Unimported\n * Locations.\n *\n * For lighter-weight suggestions while someone types, call Suggest\n * Establishments, which returns autocomplete hints rather than catalog entries.\n */\nexport function searchGoogleLocations(\n payload: object\n): RequestOptionsFactory<any> {\n function __searchGoogleLocations({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFloatToRESTFloat,\n paths: [\n { path: 'location.latLng.latitude' },\n { path: 'location.latLng.longitude' },\n ],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.gbp.location.v1.gbplocation',\n method: 'POST' as any,\n methodFqn:\n 'wix.gbp.location.v1.GbpLocationsService.SearchGoogleLocations',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixGbpLocationV1GbpLocationsServiceUrl({\n protoPath: '/v1/google-locations/search',\n data: serializedData,\n host,\n }),\n data: serializedData,\n transformResponse: (payload: any) =>\n transformPaths(payload, [\n {\n transformFn: transformRESTFloatToSDKFloat,\n paths: [\n { path: 'matches.location.latLng.latitude' },\n { path: 'matches.location.latLng.longitude' },\n ],\n },\n ]),\n };\n\n return metadata;\n }\n\n return __searchGoogleLocations;\n}\n","import { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n BulkCreateLocationsApplicationErrors,\n BulkCreateLocationsOptions,\n BulkCreateLocationsResponse,\n BulkDeleteLocationsResponse,\n CompleteVerificationApplicationErrors,\n CompleteVerificationOptions,\n CompleteVerificationResponse,\n CreateGoogleLocationApplicationErrors,\n CreateGoogleLocationOptions,\n CreateGoogleLocationResponse,\n CreateLocationApplicationErrors,\n CreateMediaApplicationErrors,\n CreateMediaOptions,\n CreateMediaResponse,\n DeleteGoogleLocationApplicationErrors,\n DeleteMediaApplicationErrors,\n DeleteMediaIdentifiers,\n DeleteReviewReplyApplicationErrors,\n DeleteReviewReplyIdentifiers,\n GBPLocation,\n GBPLocationQuery,\n GetAddressSchemaByCountryCodeApplicationErrors,\n GetAddressSchemaByCountryCodeOptions,\n GetAddressSchemaByCountryCodeResponse,\n GetGoogleLocationResponse,\n GetLocationAdminsResponse,\n GetLocationAttributesApplicationErrors,\n GetLocationAttributesResponse,\n GetLocationInsightsOptions,\n GetLocationInsightsResponse,\n GetLocationLodgingApplicationErrors,\n GetLocationLodgingResponse,\n GetVerificationOptionsApplicationErrors,\n GetVerificationOptionsResponse,\n GetVoiceOfMerchantResponse,\n GoogleLocation,\n InsightsTimeRange,\n InviteAdminToLocationOptions,\n InviteAdminToLocationResponse,\n ListAttributeMetadataApplicationErrors,\n ListAttributeMetadataOptions,\n ListAttributeMetadataResponse,\n ListCategoriesApplicationErrors,\n ListCategoriesOptions,\n ListCategoriesResponse,\n ListGbpAccountsApplicationErrors,\n ListGbpAccountsOptions,\n ListGbpAccountsResponse,\n ListMediaApplicationErrors,\n ListMediaOptions,\n ListMediaResponse,\n ListReviewsApplicationErrors,\n ListReviewsOptions,\n ListReviewsResponse,\n ListSearchKeywordImpressionsApplicationErrors,\n ListSearchKeywordImpressionsOptions,\n ListSearchKeywordImpressionsResponse,\n ListUnimportedLocationsApplicationErrors,\n ListUnimportedLocationsOptions,\n ListUnimportedLocationsResponse,\n LocationAttribute,\n LocationsQueryBuilder,\n Lodging,\n MonthlyRange,\n PutReviewReplyApplicationErrors,\n PutReviewReplyIdentifiers,\n PutReviewReplyResponse,\n QueryGBPLocationsResponse,\n QueryGoogleLocationsOptions,\n QueryGoogleLocationsResponse,\n SearchGoogleLocationsApplicationErrors,\n SearchGoogleLocationsOptions,\n SearchGoogleLocationsResponse,\n StartVerificationApplicationErrors,\n StartVerificationOptions,\n StartVerificationResponse,\n SuggestEstablishmentsApplicationErrors,\n SuggestEstablishmentsOptions,\n SuggestEstablishmentsResponse,\n SuggestRegionsApplicationErrors,\n SuggestRegionsOptions,\n SuggestRegionsResponse,\n UpdateGoogleLocationApplicationErrors,\n UpdateGoogleLocationOptions,\n UpdateGoogleLocationResponse,\n UpdateLocation,\n UpdateLocationAttributesApplicationErrors,\n UpdateLocationAttributesResponse,\n UpdateLocationFoodMenusApplicationErrors,\n UpdateLocationFoodMenusOptions,\n UpdateLocationLodgingApplicationErrors,\n UpdateLocationLodgingOptions,\n UpdateLocationLodgingResponse,\n VerificationMethodWithLiterals,\n bulkCreateLocations as universalBulkCreateLocations,\n bulkDeleteLocations as universalBulkDeleteLocations,\n completeVerification as universalCompleteVerification,\n createGoogleLocation as universalCreateGoogleLocation,\n createLocation as universalCreateLocation,\n createMedia as universalCreateMedia,\n deleteGoogleLocation as universalDeleteGoogleLocation,\n deleteLocation as universalDeleteLocation,\n deleteMedia as universalDeleteMedia,\n deleteReviewReply as universalDeleteReviewReply,\n getAddressSchemaByCountryCode as universalGetAddressSchemaByCountryCode,\n getGbpLocation as universalGetGbpLocation,\n getGoogleLocation as universalGetGoogleLocation,\n getLocationAdmins as universalGetLocationAdmins,\n getLocationAttributes as universalGetLocationAttributes,\n getLocationInsights as universalGetLocationInsights,\n getLocationLodging as universalGetLocationLodging,\n getVerificationOptions as universalGetVerificationOptions,\n getVoiceOfMerchant as universalGetVoiceOfMerchant,\n inviteAdminToLocation as universalInviteAdminToLocation,\n listAttributeMetadata as universalListAttributeMetadata,\n listCategories as universalListCategories,\n listGbpAccounts as universalListGbpAccounts,\n listMedia as universalListMedia,\n listReviews as universalListReviews,\n listSearchKeywordImpressions as universalListSearchKeywordImpressions,\n listUnimportedLocations as universalListUnimportedLocations,\n putReviewReply as universalPutReviewReply,\n queryGbpLocations as universalQueryGbpLocations,\n queryGoogleLocations as universalQueryGoogleLocations,\n searchGoogleLocations as universalSearchGoogleLocations,\n startVerification as universalStartVerification,\n suggestEstablishments as universalSuggestEstablishments,\n suggestRegions as universalSuggestRegions,\n typedQueryGbpLocations as universalTypedQueryGbpLocations,\n updateGoogleLocation as universalUpdateGoogleLocation,\n updateLocation as universalUpdateLocation,\n updateLocationAttributes as universalUpdateLocationAttributes,\n updateLocationFoodMenus as universalUpdateLocationFoodMenus,\n updateLocationLodging as universalUpdateLocationLodging,\n} from './gbp-location-v1-gbplocation-locations.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/gbp' };\n\nexport function getGbpLocation(\n httpClient: HttpClient\n): GetGbpLocationSignature {\n return (locationId: string) =>\n universalGetGbpLocation(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetGbpLocationSignature {\n /**\n * Retrieves a GBP location as it's stored for the site.\n *\n * This doesn't call Google, so it's the cheapest way to check whether a\n * location is recorded and to read its `accountId` or\n * `serviceAreaPostalAddress`. To get the live Google profile as well, call\n * Get Google Location.\n * @param - ID of the location to retrieve. This is Google's location identifier.\n * @returns The retrieved location.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GBPLocation,\n | `_id`\n | `accountId`\n | `serviceAreaPostalAddress.countryCode`\n | `serviceAreaPostalAddress.postalCode`\n | `serviceAreaPostalAddress.administrativeArea`\n | `serviceAreaPostalAddress.locality`\n | `serviceAreaPostalAddress.addressLines`\n | `revision`\n | `googleLocationId`,\n 3\n >\n >;\n}\n\nexport function queryGbpLocations(\n httpClient: HttpClient\n): QueryGbpLocationsSignature {\n return () =>\n universalQueryGbpLocations(\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface QueryGbpLocationsSignature {\n /**\n * Retrieves a list of up to 100 GBP locations, given the provided paging,\n * filtering, and sorting.\n *\n * Returns the site's stored locations. It doesn't call Google, so the response\n * contains identifiers and stored metadata rather than live profile data. To\n * retrieve the same locations with their current Google data, call Query Google\n * Locations.\n *\n * Supported properties for filtering and sorting: `id`, `googleLocationId`,\n * `accountId`.\n *\n * To learn about working with Query methods, see\n * [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language),\n * [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging),\n * and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection).\n */\n (): LocationsQueryBuilder;\n}\n\nexport function typedQueryGbpLocations(\n httpClient: HttpClient\n): TypedQueryGbpLocationsSignature {\n return (query: GBPLocationQuery) =>\n universalTypedQueryGbpLocations(\n query,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface TypedQueryGbpLocationsSignature {\n /** */\n (query: GBPLocationQuery): Promise<\n NonNullablePaths<\n QueryGBPLocationsResponse,\n | `locations`\n | `locations.${number}._id`\n | `locations.${number}.accountId`\n | `locations.${number}.serviceAreaPostalAddress.countryCode`\n | `locations.${number}.serviceAreaPostalAddress.postalCode`\n | `locations.${number}.serviceAreaPostalAddress.administrativeArea`\n | `locations.${number}.serviceAreaPostalAddress.locality`\n | `locations.${number}.revision`\n | `locations.${number}.googleLocationId`,\n 5\n >\n >;\n}\n\nexport function queryGoogleLocations(\n httpClient: HttpClient\n): QueryGoogleLocationsSignature {\n return (options?: QueryGoogleLocationsOptions) =>\n universalQueryGoogleLocations(\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface QueryGoogleLocationsSignature {\n /**\n * Retrieves a list of up to 100 GBP locations with their current Google data,\n * given the provided paging, filtering, and sorting.\n *\n * Takes the same filters as Query GBP Locations, and additionally retrieves each\n * location's live profile data from Google: title, address, opening hours and so\n * on. Use it when you need both the stored identifiers and the current profile\n * in one call.\n *\n * A location whose Google data can't be retrieved is still returned, with the\n * reason in that location's `googleError`. The call as a whole succeeds and\n * paging is unaffected, so check `googleError` per location rather than relying\n * on the response status.\n *\n * Supported properties for filtering and sorting: `id`, `googleLocationId`,\n * `accountId`.\n *\n * To learn about working with Query methods, see\n * [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language),\n * [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging),\n * and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection).\n */\n (options?: QueryGoogleLocationsOptions): Promise<\n NonNullablePaths<\n QueryGoogleLocationsResponse,\n | `locations`\n | `locations.${number}.googleLocation.name`\n | `locations.${number}.googleLocation.title`\n | `locations.${number}.googleLocation.languageCode`\n | `locations.${number}.googleLocation.primaryCategory._id`\n | `locations.${number}.googleLocation.primaryCategory.displayName`\n | `locations.${number}.googleLocation.profile.description`\n | `locations.${number}.googleLocation.storefrontAddress.countryCode`\n | `locations.${number}.googleLocation.storefrontAddress.postalCode`\n | `locations.${number}.googleLocation.storefrontAddress.administrativeArea`\n | `locations.${number}.googleLocation.storefrontAddress.locality`\n | `locations.${number}.googleLocation.serviceArea.businessType`\n | `locations.${number}.googleLocation.serviceArea.regionCode`\n | `locations.${number}.googleLocation.primaryPhone`\n | `locations.${number}.googleLocation.storeCode`\n | `locations.${number}.googleLocation.latLng.latitude`\n | `locations.${number}.googleLocation.latLng.longitude`\n | `locations.${number}.googleLocation.openInfo.status`\n | `locations.${number}.googleLocation.openInfo.canReopen`\n | `locations.${number}.googleLocation.metadata.canOperateLodgingData`\n | `locations.${number}.googleError.code`\n | `locations.${number}.googleError.description`\n | `locations.${number}.voiceOfMerchant.hasVoiceOfMerchant`\n | `locations.${number}.voiceOfMerchant.hasBusinessAuthority`\n | `locations.${number}.voiceOfMerchant.state`\n | `locations.${number}.voiceOfMerchant.recommendationReason`\n | `locations.${number}.voiceOfMerchant.hasPendingVerification`\n | `locations.${number}.location._id`\n | `locations.${number}.location.accountId`\n | `locations.${number}.location.revision`\n | `locations.${number}.location.googleLocationId`,\n 6\n >\n >;\n}\n\nexport function getGoogleLocation(\n httpClient: HttpClient\n): GetGoogleLocationSignature {\n return (locationId: string) =>\n universalGetGoogleLocation(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetGoogleLocationSignature {\n /**\n * Retrieves a GBP location with its current Google data.\n *\n * The single-location counterpart of Query Google Locations, with the same\n * behavior: if the profile data can't be retrieved from Google, the location is\n * still returned and the reason is in `googleError`.\n *\n * If the location isn't found, the call fails and Google isn't contacted.\n * @param - ID of the location to retrieve. This is Google's location identifier.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GetGoogleLocationResponse,\n | `location.googleLocation.name`\n | `location.googleLocation.title`\n | `location.googleLocation.languageCode`\n | `location.googleLocation.primaryCategory._id`\n | `location.googleLocation.primaryCategory.displayName`\n | `location.googleLocation.additionalCategories`\n | `location.googleLocation.profile.description`\n | `location.googleLocation.storefrontAddress.countryCode`\n | `location.googleLocation.storefrontAddress.postalCode`\n | `location.googleLocation.storefrontAddress.administrativeArea`\n | `location.googleLocation.storefrontAddress.locality`\n | `location.googleLocation.storefrontAddress.addressLines`\n | `location.googleLocation.serviceArea.businessType`\n | `location.googleLocation.serviceArea.places`\n | `location.googleLocation.serviceArea.places.${number}.placeName`\n | `location.googleLocation.serviceArea.places.${number}.placeId`\n | `location.googleLocation.serviceArea.regionCode`\n | `location.googleLocation.primaryPhone`\n | `location.googleLocation.additionalPhones`\n | `location.googleLocation.storeCode`\n | `location.googleLocation.regularHours`\n | `location.googleLocation.regularHours.${number}.openDay`\n | `location.googleLocation.regularHours.${number}.openTime.hours`\n | `location.googleLocation.regularHours.${number}.openTime.minutes`\n | `location.googleLocation.regularHours.${number}.closeDay`\n | `location.googleLocation.latLng.latitude`\n | `location.googleLocation.latLng.longitude`\n | `location.googleLocation.openInfo.status`\n | `location.googleLocation.openInfo.canReopen`\n | `location.googleLocation.metadata.canOperateLodgingData`\n | `location.googleError.code`\n | `location.googleError.description`\n | `location.voiceOfMerchant.hasVoiceOfMerchant`\n | `location.voiceOfMerchant.hasBusinessAuthority`\n | `location.voiceOfMerchant.state`\n | `location.voiceOfMerchant.recommendationReason`\n | `location.voiceOfMerchant.hasPendingVerification`\n | `location.location._id`\n | `location.location.accountId`\n | `location.location.revision`\n | `location.location.googleLocationId`,\n 7\n >\n >;\n}\n\nexport function createLocation(\n httpClient: HttpClient\n): CreateLocationSignature {\n return (location: NonNullablePaths<GBPLocation, `_id` | `accountId`, 2>) =>\n universalCreateLocation(\n location,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface CreateLocationSignature {\n /**\n * Imports an existing Google Business Profile location.\n *\n * Specify the Google account ID in `accountId` and the Google location ID in\n * `location.id`. Both are available from List Unimported Locations.\n *\n * This doesn't create a listing in Google. It records a location the Google\n * account already has, so that the site can manage it. To create a new listing,\n * call Create Google Location.\n *\n * A Google account must be connected first, or the call fails with\n * `CONNECTION_NOT_FOUND`. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n * @param - The location to record for this site.\n *\n * `id` is required and must be Google's location ID. `accountId` is required\n * too, because it identifies which Google account holds the listing.\n * @returns The created location.\n */\n (location: NonNullablePaths<GBPLocation, `_id` | `accountId`, 2>): Promise<\n NonNullablePaths<\n GBPLocation,\n | `_id`\n | `accountId`\n | `serviceAreaPostalAddress.countryCode`\n | `serviceAreaPostalAddress.postalCode`\n | `serviceAreaPostalAddress.administrativeArea`\n | `serviceAreaPostalAddress.locality`\n | `serviceAreaPostalAddress.addressLines`\n | `revision`\n | `googleLocationId`,\n 3\n > & {\n __applicationErrorsType?: CreateLocationApplicationErrors;\n }\n >;\n}\n\nexport function updateLocation(\n httpClient: HttpClient\n): UpdateLocationSignature {\n return (_id: string, location: UpdateLocation) =>\n universalUpdateLocation(\n _id,\n location,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateLocationSignature {\n /**\n * Updates a GBP location's stored fields.\n *\n * This doesn't change anything on the Google Business Profile. Only fields the\n * GBP location itself stores can be updated: `serviceAreaPostalAddress`, and\n * `feedEntityId` if it doesn't have a value yet. Naming a Google-owned field in\n * `fieldMask` has no effect. To change the profile in Google, call Update Google\n * Location.\n *\n * List the fields to change in `fieldMask`.\n * @param - Google's opaque location identifier on the public API.\n * @returns The updated location.\n */\n (_id: string, location: UpdateLocation): Promise<\n NonNullablePaths<\n GBPLocation,\n | `_id`\n | `accountId`\n | `serviceAreaPostalAddress.countryCode`\n | `serviceAreaPostalAddress.postalCode`\n | `serviceAreaPostalAddress.administrativeArea`\n | `serviceAreaPostalAddress.locality`\n | `serviceAreaPostalAddress.addressLines`\n | `revision`\n | `googleLocationId`,\n 3\n >\n >;\n}\n\nexport function deleteLocation(\n httpClient: HttpClient\n): DeleteLocationSignature {\n return (locationId: string) =>\n universalDeleteLocation(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface DeleteLocationSignature {\n /**\n * Deletes a GBP location, leaving the Google Business Profile listing in place.\n *\n * This is the recovery path, for when the listing is already gone from Google, or\n * is unreachable, and the stored location needs cleaning up. For the usual\n * delete, which removes the listing from Google too, call Delete Google Location.\n * @param - ID of the location to delete. This is Google's location identifier.\n */\n (locationId: string): Promise<void>;\n}\n\nexport function createGoogleLocation(\n httpClient: HttpClient\n): CreateGoogleLocationSignature {\n return (\n accountId: string,\n options?: NonNullablePaths<\n CreateGoogleLocationOptions,\n | `location`\n | `location.languageCode`\n | `location.primaryCategory`\n | `location.primaryCategory._id`\n | `location.title`,\n 4\n >\n ) =>\n universalCreateGoogleLocation(\n accountId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface CreateGoogleLocationSignature {\n /**\n * Creates a Business Profile listing in Google and records it for the site.\n *\n * Use this to add a location the Google account doesn't have yet. To record a\n * listing that already exists, call Create Location instead.\n *\n * Specify at least one of `storefrontAddress` or `serviceArea`. If neither is set,\n * the call fails with `INVALID_LOCATION_PAYLOAD`.\n *\n * Both can be set together when `serviceArea.businessType` is\n * `CUSTOMER_AND_BUSINESS_LOCATION`, which is how a business that has premises and\n * also travels to customers is represented.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * Set `validateOnly` to check the details without creating anything: Google\n * runs the same validation and returns the same errors, but no listing is\n * created and none is recorded for the site. On success the response has no\n * `location` — that absence is what \"valid\" looks like.\n *\n * Errors:\n * - `CONNECTION_NOT_FOUND`: no Google account is connected. Google isn't called.\n * - `TOKEN_RESOLUTION_FAILED`: the stored credentials couldn't be used. Google\n * isn't called and nothing is created.\n * - `GOOGLE_LOCATION_VALIDATION_FAILED`: Google rejected the details, for\n * example an invalid phone number or address, or a listing that needs a\n * postcard PIN. The specific reasons are in the error payload, and they're\n * worth surfacing: they tell the site owner what to correct. Nothing is\n * created.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed for any other reason.\n * Google's status and response are in the error payload. Nothing is created.\n * - `LOCATION_DB_PERSIST_FAILED`: Google created the listing but it couldn't be\n * recorded for the site. The new Google location ID is in the error payload,\n * so keep it: the listing exists in Google and can be recorded with Create\n * Location, or removed with Delete Google Location.\n * @param - GBP account id (numeric, no \"accounts/\" prefix). The server forms the\n * Google resource name as \"accounts/{account_id}\".\n */\n (\n accountId: string,\n options?: NonNullablePaths<\n CreateGoogleLocationOptions,\n | `location`\n | `location.languageCode`\n | `location.primaryCategory`\n | `location.primaryCategory._id`\n | `location.title`,\n 4\n >\n ): Promise<\n NonNullablePaths<\n CreateGoogleLocationResponse,\n | `location._id`\n | `location.accountId`\n | `location.serviceAreaPostalAddress.countryCode`\n | `location.serviceAreaPostalAddress.postalCode`\n | `location.serviceAreaPostalAddress.administrativeArea`\n | `location.serviceAreaPostalAddress.locality`\n | `location.serviceAreaPostalAddress.addressLines`\n | `location.revision`\n | `location.googleLocationId`,\n 4\n > & {\n __applicationErrorsType?: CreateGoogleLocationApplicationErrors;\n }\n >;\n}\n\nexport function deleteGoogleLocation(\n httpClient: HttpClient\n): DeleteGoogleLocationSignature {\n return (locationId: string) =>\n universalDeleteGoogleLocation(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface DeleteGoogleLocationSignature {\n /**\n * Deletes a Business Profile listing from Google and removes it from the site.\n *\n * This is the usual way to delete a location. To remove a location from the site\n * while leaving the Google listing alone, call Delete Location.\n *\n * Google refuses to delete some listings through its API, including verified or\n * claimed listings, chain-managed locations, and suspended ones. Those have to be\n * removed by the site owner at business.google.com.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `LOCATION_NOT_DELETABLE_VIA_API`: Google won't allow the delete, for one of\n * the reasons above. The location is left in place. Note this is checked before\n * the delete, and Google's answer can change in between, so a delete can still\n * fail after the check passed.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. The location is left in\n * place so the call can be retried. If Google keeps refusing, remove the\n * listing at business.google.com and then call Delete Location.\n * - `LOCATION_DB_PERSIST_FAILED`: Google deleted the listing but the site's copy\n * couldn't be removed. Call Delete Location to finish the job.\n * @param - ID of the location to delete. This is Google's location identifier.\n */\n (locationId: string): Promise<\n void & {\n __applicationErrorsType?: DeleteGoogleLocationApplicationErrors;\n }\n >;\n}\n\nexport function updateGoogleLocation(\n httpClient: HttpClient\n): UpdateGoogleLocationSignature {\n return (\n locationId: string,\n location: GoogleLocation,\n options: NonNullablePaths<UpdateGoogleLocationOptions, `fieldMask`, 2>\n ) =>\n universalUpdateGoogleLocation(\n locationId,\n location,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateGoogleLocationSignature {\n /**\n * Updates a location's Business Profile in Google.\n *\n * This changes the profile the public sees on Google. It doesn't change the\n * location stored for the site: to update `serviceAreaPostalAddress`, call Update\n * Location.\n *\n * `fieldMask` is required, and only these top-level fields can be updated:\n * `title`, `storeCode`, `primaryPhone`, `additionalPhones`, `primaryCategory`,\n * `additionalCategories`, `storefrontAddress`, `websiteUri`, `regularHours`,\n * `serviceArea`, `latLng`, `openInfo`, `profile`.\n *\n * Anything else, including a nested path such as `profile.description` or an\n * empty mask, fails with `INVALID_UPDATE_MASK` before Google is called.\n * `languageCode` can't be updated: Google treats it as read-only.\n *\n * ## Categories and phone numbers replace the whole set\n *\n * Google doesn't allow categories or phone numbers to be updated one at a time,\n * so each pair behaves as a single value and Google replaces everything in it.\n * Read this before updating either, because omitting a value deletes it.\n *\n * For categories:\n *\n * - Specify `primaryCategory` and `additionalCategories` together in `fieldMask`.\n * A mask with only one of them fails with `INVALID_UPDATE_MASK`.\n * - Specify the complete set you want the location to end up with, including a\n * primary category. A set without one fails with `INVALID_CATEGORIES`.\n * - Any additional category you leave out is removed, so resend the ones you want\n * to keep.\n *\n * For phone numbers:\n *\n * - Specify `primaryPhone` and `additionalPhones` together in `fieldMask`. A mask\n * with only one of them fails with `INVALID_UPDATE_MASK`.\n * - Specify the complete set of numbers you want the location to end up with. Any\n * number you leave out is removed.\n * - Unlike categories, no primary is required. Masking both and specifying none\n * removes every phone number.\n *\n * ## Errors\n *\n * - `INVALID_UPDATE_MASK`: the mask is empty, or names a field that can't be\n * updated, or masks only one half of the categories or phone numbers pair.\n * Google isn't called.\n * - `GOOGLE_LOCATION_VALIDATION_FAILED`: Google rejected the details, for example\n * an invalid phone number or address, or a listing that needs a postcard PIN.\n * The specific reasons are in the error payload and are worth surfacing: they\n * tell the site owner what to correct.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed for any other reason.\n * Google's status and response are in the error payload.\n * @param - ID of the location to update. This is Google's location identifier, without\n * the `locations/` prefix.\n * @param - The profile values to set. Only the fields named in `fieldMask` are sent to\n * Google, so this can be partial.\n */\n (\n locationId: string,\n location: GoogleLocation,\n options: NonNullablePaths<UpdateGoogleLocationOptions, `fieldMask`, 2>\n ): Promise<\n NonNullablePaths<\n UpdateGoogleLocationResponse,\n | `location.name`\n | `location.title`\n | `location.languageCode`\n | `location.primaryCategory._id`\n | `location.primaryCategory.displayName`\n | `location.additionalCategories`\n | `location.profile.description`\n | `location.storefrontAddress.countryCode`\n | `location.storefrontAddress.postalCode`\n | `location.storefrontAddress.administrativeArea`\n | `location.storefrontAddress.locality`\n | `location.storefrontAddress.addressLines`\n | `location.serviceArea.businessType`\n | `location.serviceArea.places`\n | `location.serviceArea.places.${number}.placeName`\n | `location.serviceArea.places.${number}.placeId`\n | `location.serviceArea.regionCode`\n | `location.primaryPhone`\n | `location.additionalPhones`\n | `location.storeCode`\n | `location.regularHours`\n | `location.regularHours.${number}.openDay`\n | `location.regularHours.${number}.openTime.hours`\n | `location.regularHours.${number}.openTime.minutes`\n | `location.regularHours.${number}.closeDay`\n | `location.latLng.latitude`\n | `location.latLng.longitude`\n | `location.openInfo.status`\n | `location.openInfo.canReopen`\n | `location.metadata.canOperateLodgingData`,\n 6\n > & {\n __applicationErrorsType?: UpdateGoogleLocationApplicationErrors;\n }\n >;\n}\n\nexport function bulkCreateLocations(\n httpClient: HttpClient\n): BulkCreateLocationsSignature {\n return (locations: GBPLocation[], options?: BulkCreateLocationsOptions) =>\n universalBulkCreateLocations(\n locations,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkCreateLocationsSignature {\n /**\n * Imports multiple existing Google Business Profile locations.\n *\n * Specify `id` and `accountId` on every location. This doesn't create listings in\n * Google, the same as Create Location.\n *\n * Locations are processed independently: one that fails doesn't stop the others,\n * and its reason is in that item's `itemMetadata.error`. Check the results\n * per item rather than relying on the response status.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n *\n * To import a single location, call Create Location.\n * @param - The locations to record for this site. Set `id` and `accountId` on each.\n */\n (locations: GBPLocation[], options?: BulkCreateLocationsOptions): Promise<\n NonNullablePaths<\n BulkCreateLocationsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `results.${number}.item._id`\n | `results.${number}.item.accountId`\n | `results.${number}.item.serviceAreaPostalAddress.countryCode`\n | `results.${number}.item.serviceAreaPostalAddress.postalCode`\n | `results.${number}.item.serviceAreaPostalAddress.administrativeArea`\n | `results.${number}.item.serviceAreaPostalAddress.locality`\n | `results.${number}.item.revision`\n | `results.${number}.item.googleLocationId`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n > & {\n __applicationErrorsType?: BulkCreateLocationsApplicationErrors;\n }\n >;\n}\n\nexport function bulkDeleteLocations(\n httpClient: HttpClient\n): BulkDeleteLocationsSignature {\n return (locationIds: string[]) =>\n universalBulkDeleteLocations(\n locationIds,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkDeleteLocationsSignature {\n /**\n * Deletes multiple GBP locations, leaving their Google Business Profile\n * listings in place.\n *\n * The bulk counterpart of Delete Location, and the same recovery path: use it\n * to clean up stored locations whose listings are already gone from Google or\n * unreachable. To remove the listings from Google too, call Delete Google\n * Location once per location.\n *\n * Locations are processed independently, so one that fails doesn't stop the\n * others. Check the results per location rather than relying on the response\n * status.\n * @param - IDs of the locations to delete. These are Google's location identifiers.\n */\n (locationIds: string[]): Promise<\n NonNullablePaths<\n BulkDeleteLocationsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`,\n 6\n >\n >;\n}\n\nexport function listGbpAccounts(\n httpClient: HttpClient\n): ListGbpAccountsSignature {\n return (options?: ListGbpAccountsOptions) =>\n universalListGbpAccounts(\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListGbpAccountsSignature {\n /**\n * Retrieves the Google Business Profile accounts the connected Google account\n * can access.\n *\n * A Google account can have access to more than one Business Profile account,\n * each holding its own locations. Use this to find the account ID to specify when\n * importing locations.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n */\n (options?: ListGbpAccountsOptions): Promise<\n NonNullablePaths<\n ListGbpAccountsResponse,\n | `accounts`\n | `accounts.${number}.accountId`\n | `accounts.${number}.displayName`\n | `accounts.${number}.accountType`,\n 4\n > & {\n __applicationErrorsType?: ListGbpAccountsApplicationErrors;\n }\n >;\n}\n\nexport function listUnimportedLocations(\n httpClient: HttpClient\n): ListUnimportedLocationsSignature {\n return (accountId: string, options?: ListUnimportedLocationsOptions) =>\n universalListUnimportedLocations(\n accountId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListUnimportedLocationsSignature {\n /**\n * Retrieves the locations in a Google Business Profile account that the site\n * hasn't imported yet.\n *\n * Call this before Create Location or Bulk Create Locations to find what's\n * available to import. Locations are returned in the order Google returns them.\n *\n * A Google account must be connected first. See the\n * [Connection API](https://dev.wix.com/docs/api-reference/business-management/google-business-profile/connection-v1).\n * @param - GBP Account ID to list locations for.\n */\n (accountId: string, options?: ListUnimportedLocationsOptions): Promise<\n NonNullablePaths<\n ListUnimportedLocationsResponse,\n | `locations`\n | `locations.${number}.googleLocationId`\n | `locations.${number}.title`\n | `locations.${number}.storefrontAddress.countryCode`\n | `locations.${number}.storefrontAddress.postalCode`\n | `locations.${number}.storefrontAddress.administrativeArea`\n | `locations.${number}.storefrontAddress.locality`\n | `locations.${number}.serviceArea.businessType`\n | `locations.${number}.serviceArea.regionCode`,\n 5\n > & {\n __applicationErrorsType?: ListUnimportedLocationsApplicationErrors;\n }\n >;\n}\n\nexport function listReviews(httpClient: HttpClient): ListReviewsSignature {\n return (locationId: string, options?: ListReviewsOptions) =>\n universalListReviews(\n locationId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListReviewsSignature {\n /**\n * Retrieves a list of up to 100 reviews for a location, given the provided\n * paging and sorting.\n *\n * Reviews belong to Google and can't be created or edited here. You can reply\n * to one with Put Review Reply.\n *\n * Sort with `orderBy`: `NEWEST`, `HIGHEST_RATING` or `LOWEST_RATING`.\n *\n * `metrics` carries the location's average rating and total review count.\n * Those cover every review on the profile, not just the current page.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string, options?: ListReviewsOptions): Promise<\n NonNullablePaths<\n ListReviewsResponse,\n | `reviews`\n | `reviews.${number}.reviewId`\n | `reviews.${number}.starRating`\n | `reviews.${number}.comment`\n | `reviews.${number}.createTime`\n | `reviews.${number}.reviewerDisplayName`\n | `reviews.${number}.anonymousReviewer`\n | `reviews.${number}.reply.text`\n | `reviews.${number}.reply.updateTime`\n | `metrics.averageRating`\n | `metrics.totalReviewCount`,\n 5\n > & {\n __applicationErrorsType?: ListReviewsApplicationErrors;\n }\n >;\n}\n\nexport function putReviewReply(\n httpClient: HttpClient\n): PutReviewReplySignature {\n return (\n identifiers: NonNullablePaths<\n PutReviewReplyIdentifiers,\n `locationId` | `reviewId`,\n 2\n >,\n text: string\n ) =>\n universalPutReviewReply(\n identifiers,\n text,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface PutReviewReplySignature {\n /**\n * Creates or replaces the site owner's public reply to a review.\n *\n * A review has at most one reply, so calling this again replaces the existing\n * text rather than adding a second one. The reply shows publicly on Google\n * next to the review, attributed to the business.\n * @param - Reply text to post or replace.\n */\n (\n identifiers: NonNullablePaths<\n PutReviewReplyIdentifiers,\n `locationId` | `reviewId`,\n 2\n >,\n text: string\n ): Promise<\n NonNullablePaths<\n PutReviewReplyResponse,\n `reply.text` | `reply.updateTime`,\n 3\n > & {\n __applicationErrorsType?: PutReviewReplyApplicationErrors;\n }\n >;\n}\n\nexport function deleteReviewReply(\n httpClient: HttpClient\n): DeleteReviewReplySignature {\n return (\n identifiers: NonNullablePaths<\n DeleteReviewReplyIdentifiers,\n `locationId` | `reviewId`,\n 2\n >\n ) =>\n universalDeleteReviewReply(\n identifiers,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface DeleteReviewReplySignature {\n /**\n * Deletes the site owner's reply to a review.\n *\n * The review itself isn't affected. Reviews belong to Google and can't be\n * deleted through this API.\n */\n (\n identifiers: NonNullablePaths<\n DeleteReviewReplyIdentifiers,\n `locationId` | `reviewId`,\n 2\n >\n ): Promise<\n void & {\n __applicationErrorsType?: DeleteReviewReplyApplicationErrors;\n }\n >;\n}\n\nexport function listMedia(httpClient: HttpClient): ListMediaSignature {\n return (locationId: string, options?: ListMediaOptions) =>\n universalListMedia(\n locationId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListMediaSignature {\n /**\n * Retrieves a location's media items from Google.\n *\n * Each item includes the media key you need to delete it. Media isn't stored for\n * the site, so this always reflects what's on the Business Profile now.\n *\n * That means it lags behind anything still queued through Bulk Create Media\n * Uploads. If a submission is still being applied, combine this with List Media\n * Uploads to show what the site owner asked for. Count only changes still on\n * their way, since a failed addition never reached Google:\n *\n * ```\n * gallery = this list\n * + additions still PENDING or UPLOADING\n * - removals still PENDING or UPLOADING\n * ```\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string, options?: ListMediaOptions): Promise<\n NonNullablePaths<\n ListMediaResponse,\n | `mediaItems`\n | `mediaItems.${number}.mediaKey`\n | `mediaItems.${number}.format`\n | `mediaItems.${number}.googleUrl`\n | `mediaItems.${number}.category`\n | `mediaItems.${number}.thumbnailUrl`\n | `mediaItems.${number}.description`\n | `mediaItems.${number}.sourceUrl`\n | `mediaItems.${number}.attribution.profileName`\n | `mediaItems.${number}.attribution.profilePhotoUrl`\n | `mediaItems.${number}.attribution.takedownUrl`\n | `mediaItems.${number}.attribution.profileUrl`,\n 5\n > & {\n __applicationErrorsType?: ListMediaApplicationErrors;\n }\n >;\n}\n\nexport function createMedia(httpClient: HttpClient): CreateMediaSignature {\n return (\n locationId: string,\n sourceUrl: string,\n options: NonNullablePaths<CreateMediaOptions, `category` | `format`, 2>\n ) =>\n universalCreateMedia(\n locationId,\n sourceUrl,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface CreateMediaSignature {\n /**\n * Adds a media item to a location.\n *\n * Specify `sourceUrl`, a publicly reachable URL that Google fetches the image\n * from. The URL has to stay reachable until Google has fetched it. Returns the\n * created item, including the media key needed to delete it.\n *\n * Two things to plan for:\n *\n * - Google doesn't deduplicate by URL. Calling this twice with the same\n * `sourceUrl` creates two media items, so track what you've already added.\n * - Google allows about 10 edits per minute per Business Profile, and that budget\n * covers every write to the profile: adding and deleting media, but also Update\n * Google Location and Update Location Attributes. Interleaving those with media\n * writes brings the 429 closer, so pace the profile as a whole rather than each\n * method separately. Treat a 429 as worth retrying after a delay rather than as\n * a rejection of the image.\n *\n * This method doesn't pace itself, so use it for single changes. To add several\n * photos at once, call Bulk Create Media Uploads instead. That queues the whole\n * set and applies it to Google gradually, which is what the per-minute budget\n * makes necessary.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param - Location ID. This is Google's location identifier.\n * @param - Publicly accessible URL of the media file to add. Google fetches the bytes\n * from this URL server-side, so it must be reachable without auth.\n */\n (\n locationId: string,\n sourceUrl: string,\n options: NonNullablePaths<CreateMediaOptions, `category` | `format`, 2>\n ): Promise<\n NonNullablePaths<\n CreateMediaResponse,\n | `mediaItem.mediaKey`\n | `mediaItem.format`\n | `mediaItem.googleUrl`\n | `mediaItem.category`\n | `mediaItem.thumbnailUrl`\n | `mediaItem.description`\n | `mediaItem.sourceUrl`\n | `mediaItem.attribution.profileName`\n | `mediaItem.attribution.profilePhotoUrl`\n | `mediaItem.attribution.takedownUrl`\n | `mediaItem.attribution.profileUrl`,\n 4\n > & {\n __applicationErrorsType?: CreateMediaApplicationErrors;\n }\n >;\n}\n\nexport function deleteMedia(httpClient: HttpClient): DeleteMediaSignature {\n return (\n identifiers: NonNullablePaths<\n DeleteMediaIdentifiers,\n `locationId` | `mediaKey`,\n 2\n >\n ) =>\n universalDeleteMedia(\n identifiers,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface DeleteMediaSignature {\n /**\n * Deletes a media item from a location.\n *\n * Specify the media key from List Media. Deleting an item that's already gone\n * succeeds, so it's safe to retry.\n *\n * Deletions draw on the same budget of about 10 edits per minute per Business\n * Profile as every other write to it, including Create Media, Update Google\n * Location and Update Location Attributes. Removing a set of images in quick\n * succession returns 429, so pace the profile as a whole.\n *\n * To remove several photos at once, call Bulk Create Media Uploads with removal\n * items instead. That queues them and applies them gradually.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n *\n * A malformed media key, or one belonging to a different location, also comes\n * back as `GOOGLE_API_CALL_FAILED` rather than `NOT_FOUND`.\n */\n (\n identifiers: NonNullablePaths<\n DeleteMediaIdentifiers,\n `locationId` | `mediaKey`,\n 2\n >\n ): Promise<\n void & {\n __applicationErrorsType?: DeleteMediaApplicationErrors;\n }\n >;\n}\n\n/** @internal */\nexport function updateLocationFoodMenus(\n httpClient: HttpClient\n): UpdateLocationFoodMenusSignature {\n return (locationId: string, options?: UpdateLocationFoodMenusOptions) =>\n universalUpdateLocationFoodMenus(\n locationId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateLocationFoodMenusSignature {\n /**\n * Replaces a location's food menus on its Business Profile.\n *\n * Not yet implemented. Every call currently fails, so don't build against it\n * until it's announced.\n *\n * When available: specify the complete set of menus the location should end up\n * with in `menuIds`. Menus you leave out are removed, and an empty list removes\n * them all.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string, options?: UpdateLocationFoodMenusOptions): Promise<\n void & {\n __applicationErrorsType?: UpdateLocationFoodMenusApplicationErrors;\n }\n >;\n}\n\nexport function updateLocationAttributes(\n httpClient: HttpClient\n): UpdateLocationAttributesSignature {\n return (locationId: string, attributes: LocationAttribute[]) =>\n universalUpdateLocationAttributes(\n locationId,\n attributes,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateLocationAttributesSignature {\n /**\n * Sets or deletes attributes on a location's Business Profile.\n *\n * Only the attributes you specify are affected. Attributes you don't mention are\n * left as they are, so you don't need to resend the whole set.\n *\n * Whether an attribute is set or deleted depends on `valueJson`:\n *\n * - Specify `valueJson` to set the attribute to that value. It takes Google's\n * attribute value JSON, for example `{\"valueType\":\"BOOL\",\"values\":[true]}` or\n * `{\"valueType\":\"URL\",\"uriValues\":[{\"uri\":\"https://example.com\"}]}`. Use the\n * bare attribute key in `attributeId`, such as `has_wifi`.\n * - Leave `valueJson` empty to delete the attribute.\n *\n * There's no flag for clearing everything: to delete several attributes, send one\n * entry per attribute with `valueJson` empty. To delete all of them, first\n * retrieve the location's attributes with Get Location Attributes, then send one\n * empty entry per attribute you get back. At least one entry is always required,\n * and a request carries at most 50, so a location with more than 50 attributes\n * needs more than one call.\n *\n * Call List Attribute Metadata to find which attributes a location supports and\n * what value type each one takes.\n *\n * Errors:\n * - `INVALID_VALUE_JSON`: a `valueJson` isn't valid Google attribute JSON. The\n * response says which entries were wrong, by index and attribute ID. This is\n * checked before anything else, so nothing is changed.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param - Location ID. This is Google's location identifier.\n * @param - The attributes to set or delete, keyed by `attributeId`.\n *\n * Only the attributes you name are touched. Every other attribute on the\n * listing is left alone. An entry with a `valueJson` sets that attribute, and\n * an entry with an empty `valueJson` deletes it.\n */\n (locationId: string, attributes: LocationAttribute[]): Promise<\n NonNullablePaths<\n UpdateLocationAttributesResponse,\n | `attributes`\n | `attributes.${number}.attributeId`\n | `attributes.${number}.valueJson`,\n 4\n > & {\n __applicationErrorsType?: UpdateLocationAttributesApplicationErrors;\n }\n >;\n}\n\nexport function getLocationAttributes(\n httpClient: HttpClient\n): GetLocationAttributesSignature {\n return (locationId: string) =>\n universalGetLocationAttributes(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetLocationAttributesSignature {\n /**\n * Retrieves the attributes currently set on a location's Business Profile.\n *\n * Returns only the attributes that have a value. To find out which attributes the\n * location could have, call List Attribute Metadata. To change them, call Update\n * Location Attributes.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GetLocationAttributesResponse,\n | `attributes`\n | `attributes.${number}.attributeId`\n | `attributes.${number}.valueJson`,\n 4\n > & {\n __applicationErrorsType?: GetLocationAttributesApplicationErrors;\n }\n >;\n}\n\nexport function getLocationLodging(\n httpClient: HttpClient\n): GetLocationLodgingSignature {\n return (locationId: string) =>\n universalGetLocationLodging(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetLocationLodgingSignature {\n /**\n * Retrieves the hotel data on a location's Business Profile: amenities,\n * policies, accessibility, sustainability practices and per-guest-unit detail.\n *\n * Only meaningful for a lodging business. Every field comes back only if the\n * property has an answer on record, so an unset field means \"not known\", not\n * \"not available\" — `false` is a distinct, deliberate answer.\n *\n * Errors:\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GetLocationLodgingResponse,\n | `lodging.accessibility.mobilityAccessibleElevatorException`\n | `lodging.accessibility.mobilityAccessibleException`\n | `lodging.accessibility.mobilityAccessibleParkingException`\n | `lodging.accessibility.mobilityAccessiblePoolException`\n | `lodging.activities.beachAccessException`\n | `lodging.activities.beachFrontException`\n | `lodging.activities.bicycleRentalException`\n | `lodging.activities.boutiqueStoresException`\n | `lodging.activities.casinoException`\n | `lodging.activities.freeBicycleRentalException`\n | `lodging.activities.freeWatercraftRentalException`\n | `lodging.activities.gameRoomException`\n | `lodging.activities.golfException`\n | `lodging.activities.horsebackRidingException`\n | `lodging.activities.nightclubException`\n | `lodging.activities.privateBeachException`\n | `lodging.activities.scubaException`\n | `lodging.activities.snorkelingException`\n | `lodging.activities.tennisException`\n | `lodging.activities.waterSkiingException`\n | `lodging.activities.watercraftRentalException`\n | `lodging.allUnits.bungalowOrVillaException`\n | `lodging.allUnits.connectingUnitAvailableException`\n | `lodging.allUnits.executiveFloorException`\n | `lodging.allUnits.maxAdultOccupantsCountException`\n | `lodging.allUnits.maxChildOccupantsCountException`\n | `lodging.allUnits.maxOccupantsCountException`\n | `lodging.allUnits.privateHomeException`\n | `lodging.allUnits.suiteException`\n | `lodging.allUnits.tier`\n | `lodging.allUnits.tierException`\n | `lodging.allUnits.totalLivingAreas.accessibility.adaCompliantUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleDoorbellException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleFireAlarmException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleBathtubException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleShowerException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleToiletException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.eating.coffeeMakerException`\n | `lodging.allUnits.totalLivingAreas.eating.cookwareException`\n | `lodging.allUnits.totalLivingAreas.eating.dishwasherException`\n | `lodging.allUnits.totalLivingAreas.eating.indoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.kettleException`\n | `lodging.allUnits.totalLivingAreas.eating.kitchenAvailableException`\n | `lodging.allUnits.totalLivingAreas.eating.microwaveException`\n | `lodging.allUnits.totalLivingAreas.eating.minibarException`\n | `lodging.allUnits.totalLivingAreas.eating.outdoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.ovenException`\n | `lodging.allUnits.totalLivingAreas.eating.refrigeratorException`\n | `lodging.allUnits.totalLivingAreas.eating.sinkException`\n | `lodging.allUnits.totalLivingAreas.eating.snackbarException`\n | `lodging.allUnits.totalLivingAreas.eating.stoveException`\n | `lodging.allUnits.totalLivingAreas.eating.teaStationException`\n | `lodging.allUnits.totalLivingAreas.eating.toasterException`\n | `lodging.allUnits.totalLivingAreas.features.airConditioningException`\n | `lodging.allUnits.totalLivingAreas.features.bathtubException`\n | `lodging.allUnits.totalLivingAreas.features.bidetException`\n | `lodging.allUnits.totalLivingAreas.features.dryerException`\n | `lodging.allUnits.totalLivingAreas.features.electronicRoomKeyException`\n | `lodging.allUnits.totalLivingAreas.features.fireplaceException`\n | `lodging.allUnits.totalLivingAreas.features.hairdryerException`\n | `lodging.allUnits.totalLivingAreas.features.heatingException`\n | `lodging.allUnits.totalLivingAreas.features.inunitSafeException`\n | `lodging.allUnits.totalLivingAreas.features.inunitWifiAvailableException`\n | `lodging.allUnits.totalLivingAreas.features.ironingEquipmentException`\n | `lodging.allUnits.totalLivingAreas.features.payPerViewMoviesException`\n | `lodging.allUnits.totalLivingAreas.features.privateBathroomException`\n | `lodging.allUnits.totalLivingAreas.features.showerException`\n | `lodging.allUnits.totalLivingAreas.features.toiletException`\n | `lodging.allUnits.totalLivingAreas.features.tvCastingException`\n | `lodging.allUnits.totalLivingAreas.features.tvException`\n | `lodging.allUnits.totalLivingAreas.features.tvStreamingException`\n | `lodging.allUnits.totalLivingAreas.features.universalPowerAdaptersException`\n | `lodging.allUnits.totalLivingAreas.features.washerException`\n | `lodging.allUnits.totalLivingAreas.layout.balconyException`\n | `lodging.allUnits.totalLivingAreas.layout.livingAreaSqMetersException`\n | `lodging.allUnits.totalLivingAreas.layout.loftException`\n | `lodging.allUnits.totalLivingAreas.layout.nonSmokingException`\n | `lodging.allUnits.totalLivingAreas.layout.patioException`\n | `lodging.allUnits.totalLivingAreas.layout.stairsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bunkBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.cribsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.doubleBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.featherPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.hypoallergenicBeddingException`\n | `lodging.allUnits.totalLivingAreas.sleeping.kingBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.memoryFoamPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.otherBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.queenBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.rollAwayBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.singleOrTwinBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.sofaBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.syntheticPillowsException`\n | `lodging.allUnits.views.beachViewException`\n | `lodging.allUnits.views.cityViewException`\n | `lodging.allUnits.views.gardenViewException`\n | `lodging.allUnits.views.lakeViewException`\n | `lodging.allUnits.views.landmarkViewException`\n | `lodging.allUnits.views.oceanViewException`\n | `lodging.allUnits.views.poolViewException`\n | `lodging.allUnits.views.valleyViewException`\n | `lodging.business.businessCenterException`\n | `lodging.business.meetingRoomsCountException`\n | `lodging.business.meetingRoomsException`\n | `lodging.connectivity.freeWifiException`\n | `lodging.connectivity.publicAreaWifiAvailableException`\n | `lodging.connectivity.publicInternetTerminalException`\n | `lodging.connectivity.wifiAvailableException`\n | `lodging.families.babysittingException`\n | `lodging.families.kidsActivitiesException`\n | `lodging.families.kidsClubException`\n | `lodging.families.kidsFriendlyException`\n | `lodging.foodAndDrink.barException`\n | `lodging.foodAndDrink.breakfastAvailableException`\n | `lodging.foodAndDrink.breakfastBuffetException`\n | `lodging.foodAndDrink.buffetException`\n | `lodging.foodAndDrink.dinnerBuffetException`\n | `lodging.foodAndDrink.freeBreakfastException`\n | `lodging.foodAndDrink.restaurantException`\n | `lodging.foodAndDrink.restaurantsCountException`\n | `lodging.foodAndDrink.roomServiceException`\n | `lodging.foodAndDrink.tableServiceException`\n | `lodging.foodAndDrink.twentyFourHourRoomServiceException`\n | `lodging.foodAndDrink.vendingMachineException`\n | `lodging.guestUnits`\n | `lodging.guestUnits.${number}.label`\n | `lodging.healthAndSafety.enhancedCleaning.commercialGradeDisinfectantCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.commonAreasEnhancedCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedCleaningProceduresException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedThoroughHandWashingException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesWearProtectiveEquipmentException`\n | `lodging.healthAndSafety.enhancedCleaning.guestRoomsEnhancedCleaningException`\n | `lodging.healthAndSafety.increasedFoodSafety.diningAreasAdditionalSanitationException`\n | `lodging.healthAndSafety.increasedFoodSafety.disposableFlatwareException`\n | `lodging.healthAndSafety.increasedFoodSafety.foodPreparationAndServingAdditionalSafetyException`\n | `lodging.healthAndSafety.increasedFoodSafety.individualPackagedMealsException`\n | `lodging.healthAndSafety.increasedFoodSafety.singleUseFoodMenusException`\n | `lodging.healthAndSafety.minimizedContact.contactlessCheckinCheckoutException`\n | `lodging.healthAndSafety.minimizedContact.digitalGuestRoomKeysException`\n | `lodging.healthAndSafety.minimizedContact.housekeepingScheduledRequestOnlyException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsCommonAreasException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsGuestRoomsException`\n | `lodging.healthAndSafety.minimizedContact.plasticKeycardsDisinfectedException`\n | `lodging.healthAndSafety.minimizedContact.roomBookingsBufferException`\n | `lodging.healthAndSafety.personalProtection.commonAreasOfferSanitizingItemsException`\n | `lodging.healthAndSafety.personalProtection.faceMaskRequiredException`\n | `lodging.healthAndSafety.personalProtection.guestRoomHygieneKitsAvailableException`\n | `lodging.healthAndSafety.personalProtection.protectiveEquipmentAvailableException`\n | `lodging.healthAndSafety.physicalDistancing.commonAreasPhysicalDistancingArrangedException`\n | `lodging.healthAndSafety.physicalDistancing.physicalDistancingRequiredException`\n | `lodging.healthAndSafety.physicalDistancing.safetyDividersException`\n | `lodging.healthAndSafety.physicalDistancing.sharedAreasLimitedOccupancyException`\n | `lodging.healthAndSafety.physicalDistancing.wellnessAreasHavePrivateSpacesException`\n | `lodging.housekeeping.dailyHousekeepingException`\n | `lodging.housekeeping.housekeepingAvailableException`\n | `lodging.housekeeping.turndownServiceException`\n | `lodging.parking.electricCarChargingStationsException`\n | `lodging.parking.freeParkingException`\n | `lodging.parking.freeSelfParkingException`\n | `lodging.parking.freeValetParkingException`\n | `lodging.parking.parkingAvailableException`\n | `lodging.parking.selfParkingAvailableException`\n | `lodging.parking.valetParkingAvailableException`\n | `lodging.pets.catsAllowedException`\n | `lodging.pets.dogsAllowedException`\n | `lodging.pets.petsAllowedException`\n | `lodging.pets.petsAllowedFreeException`\n | `lodging.policies.allInclusiveAvailableException`\n | `lodging.policies.allInclusiveOnlyException`\n | `lodging.policies.checkinTimeException`\n | `lodging.policies.checkoutTimeException`\n | `lodging.policies.kidsStayFreeException`\n | `lodging.policies.maxChildAgeException`\n | `lodging.policies.maxKidsStayFreeCountException`\n | `lodging.policies.paymentOptions.cashException`\n | `lodging.policies.paymentOptions.chequeException`\n | `lodging.policies.paymentOptions.creditCardException`\n | `lodging.policies.paymentOptions.debitCardException`\n | `lodging.policies.paymentOptions.mobileNfcException`\n | `lodging.policies.smokeFreePropertyException`\n | `lodging.pools.adultPoolException`\n | `lodging.pools.hotTubException`\n | `lodging.pools.indoorPoolException`\n | `lodging.pools.indoorPoolsCountException`\n | `lodging.pools.lazyRiverException`\n | `lodging.pools.lifeguardException`\n | `lodging.pools.outdoorPoolException`\n | `lodging.pools.outdoorPoolsCountException`\n | `lodging.pools.poolException`\n | `lodging.pools.poolsCountException`\n | `lodging.pools.wadingPoolException`\n | `lodging.pools.waterParkException`\n | `lodging.pools.waterslideException`\n | `lodging.pools.wavePoolException`\n | `lodging.property.builtYearException`\n | `lodging.property.floorsCountException`\n | `lodging.property.lastRenovatedYearException`\n | `lodging.property.roomsCountException`\n | `lodging.services.baggageStorageException`\n | `lodging.services.conciergeException`\n | `lodging.services.convenienceStoreException`\n | `lodging.services.currencyExchangeException`\n | `lodging.services.elevatorException`\n | `lodging.services.frontDeskException`\n | `lodging.services.fullServiceLaundryException`\n | `lodging.services.giftShopException`\n | `lodging.services.languagesSpoken`\n | `lodging.services.languagesSpoken.${number}.languageCode`\n | `lodging.services.languagesSpoken.${number}.spokenException`\n | `lodging.services.selfServiceLaundryException`\n | `lodging.services.socialHourException`\n | `lodging.services.twentyFourHourFrontDeskException`\n | `lodging.services.wakeUpCallsException`\n | `lodging.sustainability.energyEfficiency.carbonFreeEnergySourcesException`\n | `lodging.sustainability.energyEfficiency.energyConservationProgramException`\n | `lodging.sustainability.energyEfficiency.energyEfficientHeatingAndCoolingSystemsException`\n | `lodging.sustainability.energyEfficiency.energyEfficientLightingException`\n | `lodging.sustainability.energyEfficiency.energySavingThermostatsException`\n | `lodging.sustainability.energyEfficiency.greenBuildingDesignException`\n | `lodging.sustainability.energyEfficiency.independentOrganizationAuditsEnergyUseException`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertification`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertificationException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.awardedException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.ecoCertificate`\n | `lodging.sustainability.sustainabilityCertifications.leedCertification`\n | `lodging.sustainability.sustainabilityCertifications.leedCertificationException`\n | `lodging.sustainability.sustainableSourcing.ecoFriendlyToiletriesException`\n | `lodging.sustainability.sustainableSourcing.locallySourcedFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.organicCageFreeEggsException`\n | `lodging.sustainability.sustainableSourcing.organicFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.responsiblePurchasingPolicyException`\n | `lodging.sustainability.sustainableSourcing.responsiblySourcesSeafoodException`\n | `lodging.sustainability.sustainableSourcing.veganMealsException`\n | `lodging.sustainability.sustainableSourcing.vegetarianMealsException`\n | `lodging.sustainability.wasteReduction.compostableFoodContainersAndCutleryException`\n | `lodging.sustainability.wasteReduction.compostsExcessFoodException`\n | `lodging.sustainability.wasteReduction.donatesExcessFoodException`\n | `lodging.sustainability.wasteReduction.foodWasteReductionProgramException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticStrawsException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticWaterBottlesException`\n | `lodging.sustainability.wasteReduction.noStyrofoamFoodContainersException`\n | `lodging.sustainability.wasteReduction.recyclingProgramException`\n | `lodging.sustainability.wasteReduction.refillableToiletryContainersException`\n | `lodging.sustainability.wasteReduction.safelyDisposesBatteriesException`\n | `lodging.sustainability.wasteReduction.safelyDisposesElectronicsException`\n | `lodging.sustainability.wasteReduction.safelyDisposesLightbulbsException`\n | `lodging.sustainability.wasteReduction.safelyHandlesHazardousSubstancesException`\n | `lodging.sustainability.wasteReduction.soapDonationProgramException`\n | `lodging.sustainability.wasteReduction.toiletryDonationProgramException`\n | `lodging.sustainability.wasteReduction.waterBottleFillingStationsException`\n | `lodging.sustainability.waterConservation.independentOrganizationAuditsWaterUseException`\n | `lodging.sustainability.waterConservation.linenReuseProgramException`\n | `lodging.sustainability.waterConservation.towelReuseProgramException`\n | `lodging.sustainability.waterConservation.waterSavingShowersException`\n | `lodging.sustainability.waterConservation.waterSavingSinksException`\n | `lodging.sustainability.waterConservation.waterSavingToiletsException`\n | `lodging.transportation.airportShuttleException`\n | `lodging.transportation.carRentalOnPropertyException`\n | `lodging.transportation.freeAirportShuttleException`\n | `lodging.transportation.freePrivateCarServiceException`\n | `lodging.transportation.localShuttleException`\n | `lodging.transportation.privateCarServiceException`\n | `lodging.transportation.transferException`\n | `lodging.wellness.doctorOnCallException`\n | `lodging.wellness.ellipticalMachineException`\n | `lodging.wellness.fitnessCenterException`\n | `lodging.wellness.freeFitnessCenterException`\n | `lodging.wellness.freeWeightsException`\n | `lodging.wellness.massageException`\n | `lodging.wellness.salonException`\n | `lodging.wellness.saunaException`\n | `lodging.wellness.spaException`\n | `lodging.wellness.treadmillException`\n | `lodging.wellness.weightMachineException`,\n 7\n > & {\n __applicationErrorsType?: GetLocationLodgingApplicationErrors;\n }\n >;\n}\n\nexport function updateLocationLodging(\n httpClient: HttpClient\n): UpdateLocationLodgingSignature {\n return (\n locationId: string,\n lodging: Lodging,\n options: NonNullablePaths<UpdateLocationLodgingOptions, `fieldMask`, 2>\n ) =>\n universalUpdateLocationLodging(\n locationId,\n lodging,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateLocationLodgingSignature {\n /**\n * Updates the hotel data on a location's Business Profile.\n *\n * Partial update: only the fields named in `fieldMask` are touched, everything\n * else on the listing is left alone. Paths are the proto field paths and may be\n * nested, so `families` replaces that whole section while `families.kidsClub`\n * changes one amenity.\n *\n * A field named in the mask but left empty in `lodging` clears it — that is how\n * you go from \"we have a pool\" back to \"not known\". To say \"no pool\", send\n * `false` rather than clearing.\n *\n * Repeated fields can only be replaced whole, not edited item by item, so\n * `guestUnits` is a valid path and `guestUnits.codes` is not.\n *\n * Read-only fields (`metadata`, `allUnits`, `someUnits`, and anything Google\n * derives) can't be updated. They're marked read-only on the schema, so naming\n * one in the mask is rejected by request validation.\n *\n * Errors:\n * - `INVALID_UPDATE_MASK`: the mask is empty, or a path doesn't exist or reaches\n * into a repeated field. Google isn't called.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n * @param - Location ID. This is Google's location identifier.\n * @param - The hotel data to set. Only the fields named in `fieldMask` are read, so this\n * can be as sparse as the change you're making.\n */\n (\n locationId: string,\n lodging: Lodging,\n options: NonNullablePaths<UpdateLocationLodgingOptions, `fieldMask`, 2>\n ): Promise<\n NonNullablePaths<\n UpdateLocationLodgingResponse,\n | `lodging.accessibility.mobilityAccessibleElevatorException`\n | `lodging.accessibility.mobilityAccessibleException`\n | `lodging.accessibility.mobilityAccessibleParkingException`\n | `lodging.accessibility.mobilityAccessiblePoolException`\n | `lodging.activities.beachAccessException`\n | `lodging.activities.beachFrontException`\n | `lodging.activities.bicycleRentalException`\n | `lodging.activities.boutiqueStoresException`\n | `lodging.activities.casinoException`\n | `lodging.activities.freeBicycleRentalException`\n | `lodging.activities.freeWatercraftRentalException`\n | `lodging.activities.gameRoomException`\n | `lodging.activities.golfException`\n | `lodging.activities.horsebackRidingException`\n | `lodging.activities.nightclubException`\n | `lodging.activities.privateBeachException`\n | `lodging.activities.scubaException`\n | `lodging.activities.snorkelingException`\n | `lodging.activities.tennisException`\n | `lodging.activities.waterSkiingException`\n | `lodging.activities.watercraftRentalException`\n | `lodging.allUnits.bungalowOrVillaException`\n | `lodging.allUnits.connectingUnitAvailableException`\n | `lodging.allUnits.executiveFloorException`\n | `lodging.allUnits.maxAdultOccupantsCountException`\n | `lodging.allUnits.maxChildOccupantsCountException`\n | `lodging.allUnits.maxOccupantsCountException`\n | `lodging.allUnits.privateHomeException`\n | `lodging.allUnits.suiteException`\n | `lodging.allUnits.tier`\n | `lodging.allUnits.tierException`\n | `lodging.allUnits.totalLivingAreas.accessibility.adaCompliantUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleDoorbellException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleFireAlarmException`\n | `lodging.allUnits.totalLivingAreas.accessibility.hearingAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleBathtubException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleShowerException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleToiletException`\n | `lodging.allUnits.totalLivingAreas.accessibility.mobilityAccessibleUnitException`\n | `lodging.allUnits.totalLivingAreas.eating.coffeeMakerException`\n | `lodging.allUnits.totalLivingAreas.eating.cookwareException`\n | `lodging.allUnits.totalLivingAreas.eating.dishwasherException`\n | `lodging.allUnits.totalLivingAreas.eating.indoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.kettleException`\n | `lodging.allUnits.totalLivingAreas.eating.kitchenAvailableException`\n | `lodging.allUnits.totalLivingAreas.eating.microwaveException`\n | `lodging.allUnits.totalLivingAreas.eating.minibarException`\n | `lodging.allUnits.totalLivingAreas.eating.outdoorGrillException`\n | `lodging.allUnits.totalLivingAreas.eating.ovenException`\n | `lodging.allUnits.totalLivingAreas.eating.refrigeratorException`\n | `lodging.allUnits.totalLivingAreas.eating.sinkException`\n | `lodging.allUnits.totalLivingAreas.eating.snackbarException`\n | `lodging.allUnits.totalLivingAreas.eating.stoveException`\n | `lodging.allUnits.totalLivingAreas.eating.teaStationException`\n | `lodging.allUnits.totalLivingAreas.eating.toasterException`\n | `lodging.allUnits.totalLivingAreas.features.airConditioningException`\n | `lodging.allUnits.totalLivingAreas.features.bathtubException`\n | `lodging.allUnits.totalLivingAreas.features.bidetException`\n | `lodging.allUnits.totalLivingAreas.features.dryerException`\n | `lodging.allUnits.totalLivingAreas.features.electronicRoomKeyException`\n | `lodging.allUnits.totalLivingAreas.features.fireplaceException`\n | `lodging.allUnits.totalLivingAreas.features.hairdryerException`\n | `lodging.allUnits.totalLivingAreas.features.heatingException`\n | `lodging.allUnits.totalLivingAreas.features.inunitSafeException`\n | `lodging.allUnits.totalLivingAreas.features.inunitWifiAvailableException`\n | `lodging.allUnits.totalLivingAreas.features.ironingEquipmentException`\n | `lodging.allUnits.totalLivingAreas.features.payPerViewMoviesException`\n | `lodging.allUnits.totalLivingAreas.features.privateBathroomException`\n | `lodging.allUnits.totalLivingAreas.features.showerException`\n | `lodging.allUnits.totalLivingAreas.features.toiletException`\n | `lodging.allUnits.totalLivingAreas.features.tvCastingException`\n | `lodging.allUnits.totalLivingAreas.features.tvException`\n | `lodging.allUnits.totalLivingAreas.features.tvStreamingException`\n | `lodging.allUnits.totalLivingAreas.features.universalPowerAdaptersException`\n | `lodging.allUnits.totalLivingAreas.features.washerException`\n | `lodging.allUnits.totalLivingAreas.layout.balconyException`\n | `lodging.allUnits.totalLivingAreas.layout.livingAreaSqMetersException`\n | `lodging.allUnits.totalLivingAreas.layout.loftException`\n | `lodging.allUnits.totalLivingAreas.layout.nonSmokingException`\n | `lodging.allUnits.totalLivingAreas.layout.patioException`\n | `lodging.allUnits.totalLivingAreas.layout.stairsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.bunkBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.cribsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.doubleBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.featherPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.hypoallergenicBeddingException`\n | `lodging.allUnits.totalLivingAreas.sleeping.kingBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.memoryFoamPillowsException`\n | `lodging.allUnits.totalLivingAreas.sleeping.otherBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.queenBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.rollAwayBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.singleOrTwinBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.sofaBedsCountException`\n | `lodging.allUnits.totalLivingAreas.sleeping.syntheticPillowsException`\n | `lodging.allUnits.views.beachViewException`\n | `lodging.allUnits.views.cityViewException`\n | `lodging.allUnits.views.gardenViewException`\n | `lodging.allUnits.views.lakeViewException`\n | `lodging.allUnits.views.landmarkViewException`\n | `lodging.allUnits.views.oceanViewException`\n | `lodging.allUnits.views.poolViewException`\n | `lodging.allUnits.views.valleyViewException`\n | `lodging.business.businessCenterException`\n | `lodging.business.meetingRoomsCountException`\n | `lodging.business.meetingRoomsException`\n | `lodging.connectivity.freeWifiException`\n | `lodging.connectivity.publicAreaWifiAvailableException`\n | `lodging.connectivity.publicInternetTerminalException`\n | `lodging.connectivity.wifiAvailableException`\n | `lodging.families.babysittingException`\n | `lodging.families.kidsActivitiesException`\n | `lodging.families.kidsClubException`\n | `lodging.families.kidsFriendlyException`\n | `lodging.foodAndDrink.barException`\n | `lodging.foodAndDrink.breakfastAvailableException`\n | `lodging.foodAndDrink.breakfastBuffetException`\n | `lodging.foodAndDrink.buffetException`\n | `lodging.foodAndDrink.dinnerBuffetException`\n | `lodging.foodAndDrink.freeBreakfastException`\n | `lodging.foodAndDrink.restaurantException`\n | `lodging.foodAndDrink.restaurantsCountException`\n | `lodging.foodAndDrink.roomServiceException`\n | `lodging.foodAndDrink.tableServiceException`\n | `lodging.foodAndDrink.twentyFourHourRoomServiceException`\n | `lodging.foodAndDrink.vendingMachineException`\n | `lodging.guestUnits`\n | `lodging.guestUnits.${number}.label`\n | `lodging.healthAndSafety.enhancedCleaning.commercialGradeDisinfectantCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.commonAreasEnhancedCleaningException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedCleaningProceduresException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesTrainedThoroughHandWashingException`\n | `lodging.healthAndSafety.enhancedCleaning.employeesWearProtectiveEquipmentException`\n | `lodging.healthAndSafety.enhancedCleaning.guestRoomsEnhancedCleaningException`\n | `lodging.healthAndSafety.increasedFoodSafety.diningAreasAdditionalSanitationException`\n | `lodging.healthAndSafety.increasedFoodSafety.disposableFlatwareException`\n | `lodging.healthAndSafety.increasedFoodSafety.foodPreparationAndServingAdditionalSafetyException`\n | `lodging.healthAndSafety.increasedFoodSafety.individualPackagedMealsException`\n | `lodging.healthAndSafety.increasedFoodSafety.singleUseFoodMenusException`\n | `lodging.healthAndSafety.minimizedContact.contactlessCheckinCheckoutException`\n | `lodging.healthAndSafety.minimizedContact.digitalGuestRoomKeysException`\n | `lodging.healthAndSafety.minimizedContact.housekeepingScheduledRequestOnlyException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsCommonAreasException`\n | `lodging.healthAndSafety.minimizedContact.noHighTouchItemsGuestRoomsException`\n | `lodging.healthAndSafety.minimizedContact.plasticKeycardsDisinfectedException`\n | `lodging.healthAndSafety.minimizedContact.roomBookingsBufferException`\n | `lodging.healthAndSafety.personalProtection.commonAreasOfferSanitizingItemsException`\n | `lodging.healthAndSafety.personalProtection.faceMaskRequiredException`\n | `lodging.healthAndSafety.personalProtection.guestRoomHygieneKitsAvailableException`\n | `lodging.healthAndSafety.personalProtection.protectiveEquipmentAvailableException`\n | `lodging.healthAndSafety.physicalDistancing.commonAreasPhysicalDistancingArrangedException`\n | `lodging.healthAndSafety.physicalDistancing.physicalDistancingRequiredException`\n | `lodging.healthAndSafety.physicalDistancing.safetyDividersException`\n | `lodging.healthAndSafety.physicalDistancing.sharedAreasLimitedOccupancyException`\n | `lodging.healthAndSafety.physicalDistancing.wellnessAreasHavePrivateSpacesException`\n | `lodging.housekeeping.dailyHousekeepingException`\n | `lodging.housekeeping.housekeepingAvailableException`\n | `lodging.housekeeping.turndownServiceException`\n | `lodging.parking.electricCarChargingStationsException`\n | `lodging.parking.freeParkingException`\n | `lodging.parking.freeSelfParkingException`\n | `lodging.parking.freeValetParkingException`\n | `lodging.parking.parkingAvailableException`\n | `lodging.parking.selfParkingAvailableException`\n | `lodging.parking.valetParkingAvailableException`\n | `lodging.pets.catsAllowedException`\n | `lodging.pets.dogsAllowedException`\n | `lodging.pets.petsAllowedException`\n | `lodging.pets.petsAllowedFreeException`\n | `lodging.policies.allInclusiveAvailableException`\n | `lodging.policies.allInclusiveOnlyException`\n | `lodging.policies.checkinTimeException`\n | `lodging.policies.checkoutTimeException`\n | `lodging.policies.kidsStayFreeException`\n | `lodging.policies.maxChildAgeException`\n | `lodging.policies.maxKidsStayFreeCountException`\n | `lodging.policies.paymentOptions.cashException`\n | `lodging.policies.paymentOptions.chequeException`\n | `lodging.policies.paymentOptions.creditCardException`\n | `lodging.policies.paymentOptions.debitCardException`\n | `lodging.policies.paymentOptions.mobileNfcException`\n | `lodging.policies.smokeFreePropertyException`\n | `lodging.pools.adultPoolException`\n | `lodging.pools.hotTubException`\n | `lodging.pools.indoorPoolException`\n | `lodging.pools.indoorPoolsCountException`\n | `lodging.pools.lazyRiverException`\n | `lodging.pools.lifeguardException`\n | `lodging.pools.outdoorPoolException`\n | `lodging.pools.outdoorPoolsCountException`\n | `lodging.pools.poolException`\n | `lodging.pools.poolsCountException`\n | `lodging.pools.wadingPoolException`\n | `lodging.pools.waterParkException`\n | `lodging.pools.waterslideException`\n | `lodging.pools.wavePoolException`\n | `lodging.property.builtYearException`\n | `lodging.property.floorsCountException`\n | `lodging.property.lastRenovatedYearException`\n | `lodging.property.roomsCountException`\n | `lodging.services.baggageStorageException`\n | `lodging.services.conciergeException`\n | `lodging.services.convenienceStoreException`\n | `lodging.services.currencyExchangeException`\n | `lodging.services.elevatorException`\n | `lodging.services.frontDeskException`\n | `lodging.services.fullServiceLaundryException`\n | `lodging.services.giftShopException`\n | `lodging.services.languagesSpoken`\n | `lodging.services.languagesSpoken.${number}.languageCode`\n | `lodging.services.languagesSpoken.${number}.spokenException`\n | `lodging.services.selfServiceLaundryException`\n | `lodging.services.socialHourException`\n | `lodging.services.twentyFourHourFrontDeskException`\n | `lodging.services.wakeUpCallsException`\n | `lodging.sustainability.energyEfficiency.carbonFreeEnergySourcesException`\n | `lodging.sustainability.energyEfficiency.energyConservationProgramException`\n | `lodging.sustainability.energyEfficiency.energyEfficientHeatingAndCoolingSystemsException`\n | `lodging.sustainability.energyEfficiency.energyEfficientLightingException`\n | `lodging.sustainability.energyEfficiency.energySavingThermostatsException`\n | `lodging.sustainability.energyEfficiency.greenBuildingDesignException`\n | `lodging.sustainability.energyEfficiency.independentOrganizationAuditsEnergyUseException`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertification`\n | `lodging.sustainability.sustainabilityCertifications.breeamCertificationException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.awardedException`\n | `lodging.sustainability.sustainabilityCertifications.ecoCertifications.${number}.ecoCertificate`\n | `lodging.sustainability.sustainabilityCertifications.leedCertification`\n | `lodging.sustainability.sustainabilityCertifications.leedCertificationException`\n | `lodging.sustainability.sustainableSourcing.ecoFriendlyToiletriesException`\n | `lodging.sustainability.sustainableSourcing.locallySourcedFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.organicCageFreeEggsException`\n | `lodging.sustainability.sustainableSourcing.organicFoodAndBeveragesException`\n | `lodging.sustainability.sustainableSourcing.responsiblePurchasingPolicyException`\n | `lodging.sustainability.sustainableSourcing.responsiblySourcesSeafoodException`\n | `lodging.sustainability.sustainableSourcing.veganMealsException`\n | `lodging.sustainability.sustainableSourcing.vegetarianMealsException`\n | `lodging.sustainability.wasteReduction.compostableFoodContainersAndCutleryException`\n | `lodging.sustainability.wasteReduction.compostsExcessFoodException`\n | `lodging.sustainability.wasteReduction.donatesExcessFoodException`\n | `lodging.sustainability.wasteReduction.foodWasteReductionProgramException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticStrawsException`\n | `lodging.sustainability.wasteReduction.noSingleUsePlasticWaterBottlesException`\n | `lodging.sustainability.wasteReduction.noStyrofoamFoodContainersException`\n | `lodging.sustainability.wasteReduction.recyclingProgramException`\n | `lodging.sustainability.wasteReduction.refillableToiletryContainersException`\n | `lodging.sustainability.wasteReduction.safelyDisposesBatteriesException`\n | `lodging.sustainability.wasteReduction.safelyDisposesElectronicsException`\n | `lodging.sustainability.wasteReduction.safelyDisposesLightbulbsException`\n | `lodging.sustainability.wasteReduction.safelyHandlesHazardousSubstancesException`\n | `lodging.sustainability.wasteReduction.soapDonationProgramException`\n | `lodging.sustainability.wasteReduction.toiletryDonationProgramException`\n | `lodging.sustainability.wasteReduction.waterBottleFillingStationsException`\n | `lodging.sustainability.waterConservation.independentOrganizationAuditsWaterUseException`\n | `lodging.sustainability.waterConservation.linenReuseProgramException`\n | `lodging.sustainability.waterConservation.towelReuseProgramException`\n | `lodging.sustainability.waterConservation.waterSavingShowersException`\n | `lodging.sustainability.waterConservation.waterSavingSinksException`\n | `lodging.sustainability.waterConservation.waterSavingToiletsException`\n | `lodging.transportation.airportShuttleException`\n | `lodging.transportation.carRentalOnPropertyException`\n | `lodging.transportation.freeAirportShuttleException`\n | `lodging.transportation.freePrivateCarServiceException`\n | `lodging.transportation.localShuttleException`\n | `lodging.transportation.privateCarServiceException`\n | `lodging.transportation.transferException`\n | `lodging.wellness.doctorOnCallException`\n | `lodging.wellness.ellipticalMachineException`\n | `lodging.wellness.fitnessCenterException`\n | `lodging.wellness.freeFitnessCenterException`\n | `lodging.wellness.freeWeightsException`\n | `lodging.wellness.massageException`\n | `lodging.wellness.salonException`\n | `lodging.wellness.saunaException`\n | `lodging.wellness.spaException`\n | `lodging.wellness.treadmillException`\n | `lodging.wellness.weightMachineException`,\n 7\n > & {\n __applicationErrorsType?: UpdateLocationLodgingApplicationErrors;\n }\n >;\n}\n\nexport function listAttributeMetadata(\n httpClient: HttpClient\n): ListAttributeMetadataSignature {\n return (options?: ListAttributeMetadataOptions) =>\n universalListAttributeMetadata(\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListAttributeMetadataSignature {\n /**\n * Retrieves the attributes a Business Profile can have, with each one's value\n * type, display name and options.\n *\n * Use it to work out what you can send to Update Location Attributes, or to build\n * an editor for a site owner.\n *\n * Specify exactly one of:\n *\n * - `locationId`, for the attributes available to an existing location, based on\n * its category and country.\n * - `categoryRegion`, for the attributes available to a Google category and\n * country. Use this before a location exists, for example while a site owner is\n * still choosing a category. It doesn't need a connected Google account.\n *\n * Errors:\n * - `INVALID_ARGUMENT`: neither or both of the two lookup fields were specified.\n * - `NOT_FOUND`: the location isn't recorded for this site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: the call to Google failed. Google's status and\n * response are in the error payload.\n */\n (options?: ListAttributeMetadataOptions): Promise<\n NonNullablePaths<\n ListAttributeMetadataResponse,\n | `attributeMetadata`\n | `attributeMetadata.${number}.attributeId`\n | `attributeMetadata.${number}.valueType`\n | `attributeMetadata.${number}.displayName`\n | `attributeMetadata.${number}.groupDisplayName`\n | `attributeMetadata.${number}.repeatable`\n | `attributeMetadata.${number}.deprecated`,\n 4\n > & {\n __applicationErrorsType?: ListAttributeMetadataApplicationErrors;\n }\n >;\n}\n\nexport function listCategories(\n httpClient: HttpClient\n): ListCategoriesSignature {\n return (\n regionCode: string,\n options?: NonNullablePaths<ListCategoriesOptions, `languageCode`, 2>\n ) =>\n universalListCategories(\n regionCode,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListCategoriesSignature {\n /**\n * Retrieves Google's catalog of business categories.\n *\n * Use it to let a site owner choose a primary or additional category before\n * creating or updating a location. Each returned `id` can be assigned directly\n * to a category on the location.\n *\n * The catalog is the same for everyone, so results don't depend on the\n * location. `locationId` is optional and selects whose Google credentials the\n * catalog is read with, not which categories come back. Send it when you\n * already have a location, and leave it out before one exists, for example in\n * a create-location flow.\n *\n * `searchTerm` matches against the category's localized display name. Pass a\n * plain term rather than a query expression. Leave it out to page through the\n * whole catalog.\n *\n * Errors:\n * - `NOT_FOUND`: `locationId` was set but the location isn't recorded for this\n * site. Google isn't called.\n * - `GOOGLE_API_CALL_FAILED`: Google returned an error. Its HTTP status is in\n * the error data.\n * @param - ISO 3166-1 alpha-2 country code (e.g. \"US\") the catalog is scoped to.\n * Categories differ per country, so this is required.\n */\n (\n regionCode: string,\n options?: NonNullablePaths<ListCategoriesOptions, `languageCode`, 2>\n ): Promise<\n NonNullablePaths<\n ListCategoriesResponse,\n | `categories`\n | `categories.${number}._id`\n | `categories.${number}.displayName`,\n 4\n > & {\n __applicationErrorsType?: ListCategoriesApplicationErrors;\n }\n >;\n}\n\nexport function getVerificationOptions(\n httpClient: HttpClient\n): GetVerificationOptionsSignature {\n return (locationId: string) =>\n universalGetVerificationOptions(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetVerificationOptionsSignature {\n /**\n * Retrieves the ways a location can be verified.\n *\n * Google decides which options a location is eligible for, and each option\n * says what it needs. Call this before Start Verification to find out what to\n * offer the site owner.\n *\n * For a service-area business, save `serviceAreaPostalAddress` on the location\n * first with Update Location. Google can't work out the options without it.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GetVerificationOptionsResponse,\n `options` | `options.${number}.method` | `options.${number}.displayData`,\n 4\n > & {\n __applicationErrorsType?: GetVerificationOptionsApplicationErrors;\n }\n >;\n}\n\nexport function startVerification(\n httpClient: HttpClient\n): StartVerificationSignature {\n return (\n locationId: string,\n method: VerificationMethodWithLiterals,\n options?: StartVerificationOptions\n ) =>\n universalStartVerification(\n locationId,\n method,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface StartVerificationSignature {\n /**\n * Starts verifying a location with Google.\n *\n * Call Get Verification Options first to find out which methods Google allows for\n * the location, then specify one here.\n *\n * For `ADDRESS`, `EMAIL`, `PHONE_CALL` and `SMS`, Google sends a PIN to the site\n * owner. Pass it to Complete Verification to finish.\n *\n * For `AUTO`, Google verifies the location itself. There's no PIN and no second\n * call, and `verificationState` comes back as `VERIFIED` straight away.\n *\n * `VERIFIED` is narrower than it sounds. It means the location has business\n * authority and has entered Google's quality review. It does not mean the profile\n * is live and trusted: for that, check `hasVoiceOfMerchant` with Get Voice Of\n * Merchant. A location can be verified and still not be publicly visible.\n * @param - Location ID. This is Google's location identifier.\n * @param - Verification method chosen by the merchant.\n */\n (\n locationId: string,\n method: VerificationMethodWithLiterals,\n options?: StartVerificationOptions\n ): Promise<\n NonNullablePaths<\n StartVerificationResponse,\n `pendingVerificationId` | `verificationState`,\n 2\n > & {\n __applicationErrorsType?: StartVerificationApplicationErrors;\n }\n >;\n}\n\nexport function completeVerification(\n httpClient: HttpClient\n): CompleteVerificationSignature {\n return (\n locationId: string,\n pin: string,\n options: NonNullablePaths<\n CompleteVerificationOptions,\n `pendingVerificationId`,\n 2\n >\n ) =>\n universalCompleteVerification(\n locationId,\n pin,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface CompleteVerificationSignature {\n /**\n * Completes a verification by submitting the PIN Google sent.\n *\n * Specify the `pendingVerificationId` from Start Verification and the `pin`\n * the site owner received by the method they chose.\n *\n * Verification succeeding doesn't on its own mean the profile is live on\n * Google. Call Get Voice Of Merchant to check that.\n * @param - Location ID. This is Google's location identifier.\n * @param - The PIN the site owner received by the method they chose.\n */\n (\n locationId: string,\n pin: string,\n options: NonNullablePaths<\n CompleteVerificationOptions,\n `pendingVerificationId`,\n 2\n >\n ): Promise<\n NonNullablePaths<CompleteVerificationResponse, `verificationState`, 2> & {\n __applicationErrorsType?: CompleteVerificationApplicationErrors;\n }\n >;\n}\n\nexport function getVoiceOfMerchant(\n httpClient: HttpClient\n): GetVoiceOfMerchantSignature {\n return (locationId: string) =>\n universalGetVoiceOfMerchant(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetVoiceOfMerchantSignature {\n /**\n * Retrieves whether Google considers a location's profile trusted and live.\n *\n * Google calls this Voice of Merchant. A location can be verified and still\n * not have it, so check this before telling a site owner their profile is\n * live.\n *\n * `state` says what's needed next, such as waiting, verifying, complying with\n * Google's guidelines, or resolving who owns the listing.\n * @param - Location ID. This is Google's location identifier.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GetVoiceOfMerchantResponse,\n | `voiceOfMerchant.hasVoiceOfMerchant`\n | `voiceOfMerchant.hasBusinessAuthority`\n | `voiceOfMerchant.state`\n | `voiceOfMerchant.recommendationReason`\n | `voiceOfMerchant.hasPendingVerification`,\n 3\n >\n >;\n}\n\nexport function getLocationInsights(\n httpClient: HttpClient\n): GetLocationInsightsSignature {\n return (\n locationId: string,\n timeRange: InsightsTimeRange,\n options: NonNullablePaths<GetLocationInsightsOptions, `metricTypes`, 2>\n ) =>\n universalGetLocationInsights(\n locationId,\n timeRange,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetLocationInsightsSignature {\n /**\n * Retrieves daily performance metrics for a location.\n *\n * Covers how people found and used the profile: impressions on Google Search\n * and Maps split by desktop and mobile, and actions such as calls, direction\n * requests, website clicks, messages, and bookings.\n *\n * Specify the metrics you want in `metricTypes` and the window in\n * `timeRange`. Each returned metric carries its own daily series, so ask only\n * for the ones you'll use.\n * @param - Location ID. This is Google's location identifier.\n * @param - Time range for the insights query.\n */\n (\n locationId: string,\n timeRange: InsightsTimeRange,\n options: NonNullablePaths<GetLocationInsightsOptions, `metricTypes`, 2>\n ): Promise<\n NonNullablePaths<\n GetLocationInsightsResponse,\n | `metrics`\n | `metrics.${number}.metricType`\n | `metrics.${number}.totalValue`,\n 4\n >\n >;\n}\n\nexport function listSearchKeywordImpressions(\n httpClient: HttpClient\n): ListSearchKeywordImpressionsSignature {\n return (\n locationId: string,\n monthlyRange: MonthlyRange,\n options?: ListSearchKeywordImpressionsOptions\n ) =>\n universalListSearchKeywordImpressions(\n locationId,\n monthlyRange,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListSearchKeywordImpressionsSignature {\n /**\n * Retrieves a list of up to 100 search terms people used to find a location,\n * by calendar month.\n *\n * Each term carries either `value`, the exact number of impressions, or\n * `threshold`, meaning the real count is below that number and Google won't\n * report it precisely. Check which one is set rather than assuming a count.\n *\n * Search terms are what real people typed, so treat `searchKeyword` as\n * possibly containing personal information.\n * @param - Location ID. This is Google's location identifier.\n * @param - Inclusive calendar-month range to query.\n */\n (\n locationId: string,\n monthlyRange: MonthlyRange,\n options?: ListSearchKeywordImpressionsOptions\n ): Promise<\n NonNullablePaths<\n ListSearchKeywordImpressionsResponse,\n | `keywordImpressions`\n | `keywordImpressions.${number}.value`\n | `keywordImpressions.${number}.threshold`\n | `keywordImpressions.${number}.searchKeyword`,\n 4\n > & {\n __applicationErrorsType?: ListSearchKeywordImpressionsApplicationErrors;\n }\n >;\n}\n\nexport function inviteAdminToLocation(\n httpClient: HttpClient\n): InviteAdminToLocationSignature {\n return (\n locationId: string,\n email: string,\n options: NonNullablePaths<InviteAdminToLocationOptions, `role`, 2>\n ) =>\n universalInviteAdminToLocation(\n locationId,\n email,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface InviteAdminToLocationSignature {\n /**\n * Invites a Google account to manage a location's Business Profile.\n *\n * Specify the `email` of the Google account to invite and the `role` to grant.\n * The invitation has to be accepted by that account before it takes effect.\n * Until then it appears in Get Location Admins with `pendingInvitation` set to\n * `true`.\n *\n * An account that already manages the location isn't invited again, so calling\n * this twice is safe.\n * @param - Location ID (Google's opaque location id) to invite the account to manage.\n * @param - The email of the Google account to invite as a manager. PII.\n */\n (\n locationId: string,\n email: string,\n options: NonNullablePaths<InviteAdminToLocationOptions, `role`, 2>\n ): Promise<InviteAdminToLocationResponse>;\n}\n\nexport function getLocationAdmins(\n httpClient: HttpClient\n): GetLocationAdminsSignature {\n return (locationId: string) =>\n universalGetLocationAdmins(\n locationId,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetLocationAdminsSignature {\n /**\n * Retrieves the accounts that manage a location's Business Profile, including\n * invitations that haven't been accepted yet.\n *\n * Use it to check who already has access before inviting someone, because\n * Google rejects an invitation for an account that already manages the\n * location.\n * @param - Location ID (Google's opaque location id) to list admins for.\n */\n (locationId: string): Promise<\n NonNullablePaths<\n GetLocationAdminsResponse,\n | `locationAdmins`\n | `locationAdmins.${number}._id`\n | `locationAdmins.${number}.googleLocationId`\n | `locationAdmins.${number}.accountResourceName`\n | `locationAdmins.${number}.role`\n | `locationAdmins.${number}.pendingInvitation`,\n 4\n >\n >;\n}\n\nexport function getAddressSchemaByCountryCode(\n httpClient: HttpClient\n): GetAddressSchemaByCountryCodeSignature {\n return (\n countryCode: string,\n options?: GetAddressSchemaByCountryCodeOptions\n ) =>\n universalGetAddressSchemaByCountryCode(\n countryCode,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface GetAddressSchemaByCountryCodeSignature {\n /**\n * Retrieves how to render an address form for a country.\n *\n * Tells you which address fields to show and in what order, which are\n * required, the administrative areas to offer such as states or provinces, and\n * what to label each field in that country.\n *\n * This is public reference data, so it needs no connected Google account and\n * no existing location. Call it before collecting an address, for example\n * while creating a location.\n * @param - ISO 3166-1 alpha-2 country code (e.g. \"US\", \"UA\", \"KR\").\n */\n (\n countryCode: string,\n options?: GetAddressSchemaByCountryCodeOptions\n ): Promise<\n NonNullablePaths<\n GetAddressSchemaByCountryCodeResponse,\n | `schema.countryCode`\n | `schema.fields`\n | `schema.requiredFields`\n | `schema.administrativeAreas`\n | `schema.postalFormat`\n | `schema.languages`\n | `schema.administrativeAreaType`\n | `schema.localityType`\n | `schema.subLocalityType`\n | `schema.postalCodeType`,\n 3\n > & {\n __applicationErrorsType?: GetAddressSchemaByCountryCodeApplicationErrors;\n }\n >;\n}\n\nexport function suggestRegions(\n httpClient: HttpClient\n): SuggestRegionsSignature {\n return (\n query: string,\n options?: NonNullablePaths<SuggestRegionsOptions, `countryCode`, 2>\n ) =>\n universalSuggestRegions(\n query,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface SuggestRegionsSignature {\n /**\n * Retrieves region suggestions for partial text, for autocompleting a city,\n * state or region as someone types.\n *\n * Only places of that kind come back. Street addresses and businesses never\n * do, so use Suggest Establishments to autocomplete a business name.\n *\n * Needs no connected Google account and no existing location. Text shorter\n * than 3 characters returns an empty list rather than an error, so you can\n * call it on every keystroke.\n * @param - Partial free-text the end-user is typing (e.g. \"new y\"). Sent per debounced\n * keystroke; Google returns region/city predictions matching this prefix.\n * Queries shorter than 3 chars return an empty list (handled server-side),\n * not an error.\n */\n (\n query: string,\n options?: NonNullablePaths<SuggestRegionsOptions, `countryCode`, 2>\n ): Promise<\n NonNullablePaths<\n SuggestRegionsResponse,\n | `suggestions`\n | `suggestions.${number}.placeId`\n | `suggestions.${number}.description`\n | `suggestions.${number}.mainText`\n | `suggestions.${number}.secondaryText`,\n 4\n > & {\n __applicationErrorsType?: SuggestRegionsApplicationErrors;\n }\n >;\n}\n\nexport function suggestEstablishments(\n httpClient: HttpClient\n): SuggestEstablishmentsSignature {\n return (query: string, options?: SuggestEstablishmentsOptions) =>\n universalSuggestEstablishments(\n query,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface SuggestEstablishmentsSignature {\n /**\n * Retrieves business suggestions for partial text, for autocompleting a\n * business name as someone types.\n *\n * Only existing businesses come back. Regions and street addresses never do,\n * so use Suggest Regions for those. Use this to find and prefill the business\n * a site owner wants to claim.\n *\n * Needs no connected Google account and no existing location. Text shorter\n * than 3 characters returns an empty list rather than an error.\n *\n * `countryCode` is optional here, unlike Suggest Regions: business names are\n * searched worldwide unless you narrow them.\n * @param - Partial free-text the end-user is typing (e.g. \"acme hard\"). Sent per\n * debounced keystroke; Google returns business-name predictions matching\n * this prefix. Queries shorter than 3 chars return an empty list\n * (handled server-side), not an error.\n */\n (query: string, options?: SuggestEstablishmentsOptions): Promise<\n NonNullablePaths<\n SuggestEstablishmentsResponse,\n | `suggestions`\n | `suggestions.${number}.placeId`\n | `suggestions.${number}.description`\n | `suggestions.${number}.mainText`\n | `suggestions.${number}.secondaryText`,\n 4\n > & {\n __applicationErrorsType?: SuggestEstablishmentsApplicationErrors;\n }\n >;\n}\n\nexport function searchGoogleLocations(\n httpClient: HttpClient\n): SearchGoogleLocationsSignature {\n return (options: SearchGoogleLocationsOptions) =>\n universalSearchGoogleLocations(\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface SearchGoogleLocationsSignature {\n /**\n * Searches Google's Business Profile catalog for existing listings.\n *\n * Specify either a free-text query or a title and address. Each result is a real\n * catalog entry, and carries a `matchStatus` saying whether it can be claimed.\n *\n * This doesn't need a connected Google account, so you can call it before the\n * site owner connects one, for example to check whether a business already has a\n * listing.\n *\n * Read `matchStatus` carefully, because it's about the catalog rather than about\n * the site owner:\n *\n * - `CLAIMABLE`: no Google account has claimed this listing.\n * - `OWNED_ELSEWHERE`: some Google account has claimed it. That account may well\n * be the site owner's own, so don't present this as someone else's listing.\n * Confirm ownership by connecting their account and calling List Unimported\n * Locations.\n *\n * For lighter-weight suggestions while someone types, call Suggest\n * Establishments, which returns autocomplete hints rather than catalog entries.\n */\n (options: SearchGoogleLocationsOptions): Promise<\n NonNullablePaths<\n SearchGoogleLocationsResponse,\n | `matches`\n | `matches.${number}.location.name`\n | `matches.${number}.location.title`\n | `matches.${number}.location.languageCode`\n | `matches.${number}.location.primaryCategory._id`\n | `matches.${number}.location.primaryCategory.displayName`\n | `matches.${number}.location.profile.description`\n | `matches.${number}.location.storefrontAddress.countryCode`\n | `matches.${number}.location.storefrontAddress.postalCode`\n | `matches.${number}.location.storefrontAddress.administrativeArea`\n | `matches.${number}.location.storefrontAddress.locality`\n | `matches.${number}.location.serviceArea.businessType`\n | `matches.${number}.location.serviceArea.regionCode`\n | `matches.${number}.location.primaryPhone`\n | `matches.${number}.location.storeCode`\n | `matches.${number}.location.latLng.latitude`\n | `matches.${number}.location.latLng.longitude`\n | `matches.${number}.location.openInfo.status`\n | `matches.${number}.location.openInfo.canReopen`\n | `matches.${number}.location.metadata.canOperateLodgingData`\n | `matches.${number}.status`,\n 6\n > & {\n __applicationErrorsType?: SearchGoogleLocationsApplicationErrors;\n }\n >;\n}\n\nexport {\n Accessibility,\n AccountInfo,\n ActionEvent,\n Activities,\n AddressFieldType,\n AddressSchema,\n AmenityException,\n ApplicationError,\n AttributeMetadata,\n AttributeValueMetadata,\n AttributeValueMetadataValueOneOf,\n AttributeValueType,\n BreeamCertification,\n BulkActionMetadata,\n BulkCreateLocationResult,\n BulkCreateLocationsOptions,\n BulkCreateLocationsRequest,\n BulkCreateLocationsResponse,\n BulkDeleteLocationResult,\n BulkDeleteLocationsRequest,\n BulkDeleteLocationsResponse,\n Business,\n BusinessHours,\n BusinessType,\n CalendarMonth,\n Category,\n CategoryMetadata,\n CategoryRegion,\n CategoryView,\n CompleteVerificationOptions,\n CompleteVerificationRequest,\n CompleteVerificationResponse,\n Connectivity,\n CreateGoogleLocationOptions,\n CreateGoogleLocationRequest,\n CreateGoogleLocationResponse,\n CreateLocationRequest,\n CreateLocationResponse,\n CreateMediaOptions,\n CreateMediaRequest,\n CreateMediaResponse,\n CursorPaging,\n CursorPagingMetadata,\n CursorQuery,\n CursorQueryPagingMethodOneOf,\n Cursors,\n DailyMetric,\n DailyMetricValue,\n DayOfWeek,\n DeleteGoogleLocationRequest,\n DeleteGoogleLocationResponse,\n DeleteLocationRequest,\n DeleteLocationResponse,\n DeleteMediaIdentifiers,\n DeleteMediaRequest,\n DeleteMediaResponse,\n DeleteReviewReplyIdentifiers,\n DeleteReviewReplyRequest,\n DeleteReviewReplyResponse,\n DomainEvent,\n DomainEventBodyOneOf,\n EcoCertificate,\n EcoCertification,\n Empty,\n EnergyEfficiency,\n EnhancedCleaning,\n EntityCreatedEvent,\n EntityDeletedEvent,\n EntityUpdatedEvent,\n EstablishmentSuggestion,\n Families,\n FieldViolation,\n FoodAndDrink,\n GBPLocation,\n GBPLocationQuerySpec,\n GbpAccount,\n GetAddressSchemaByCountryCodeOptions,\n GetAddressSchemaByCountryCodeRequest,\n GetAddressSchemaByCountryCodeResponse,\n GetGBPLocationRequest,\n GetGBPLocationResponse,\n GetGoogleLocationRequest,\n GetGoogleLocationResponse,\n GetLocationAdminsRequest,\n GetLocationAdminsResponse,\n GetLocationAttributesRequest,\n GetLocationAttributesResponse,\n GetLocationInsightsOptions,\n GetLocationInsightsRequest,\n GetLocationInsightsResponse,\n GetLocationLodgingRequest,\n GetLocationLodgingResponse,\n GetVerificationOptionsRequest,\n GetVerificationOptionsResponse,\n GetVoiceOfMerchantRequest,\n GetVoiceOfMerchantResponse,\n GoogleApiCallFailedError,\n GoogleLocation,\n GoogleLocationMatch,\n GoogleLocationValidationError,\n GuestUnitFeatures,\n GuestUnitType,\n HealthAndSafety,\n Housekeeping,\n IdentificationData,\n IdentificationDataIdOneOf,\n IncreasedFoodSafety,\n InsightsMetric,\n InsightsTimeRange,\n InvalidUpdateMaskError,\n InvalidValueJsonError,\n InviteAdminToLocationOptions,\n InviteAdminToLocationRequest,\n InviteAdminToLocationResponse,\n ItemMetadata,\n LanguageSpoken,\n LatLng,\n LeedCertification,\n ListAttributeMetadataOptions,\n ListAttributeMetadataOptionsLookupOneOf,\n ListAttributeMetadataRequest,\n ListAttributeMetadataRequestLookupOneOf,\n ListAttributeMetadataResponse,\n ListCategoriesOptions,\n ListCategoriesRequest,\n ListCategoriesResponse,\n ListGbpAccountsOptions,\n ListGbpAccountsRequest,\n ListGbpAccountsResponse,\n ListMediaOptions,\n ListMediaRequest,\n ListMediaResponse,\n ListReviewsOptions,\n ListReviewsRequest,\n ListReviewsResponse,\n ListSearchKeywordImpressionsOptions,\n ListSearchKeywordImpressionsRequest,\n ListSearchKeywordImpressionsResponse,\n ListUnimportedLocationsOptions,\n ListUnimportedLocationsRequest,\n ListUnimportedLocationsResponse,\n LivingArea,\n LivingAreaAccessibility,\n LivingAreaEating,\n LivingAreaFeatures,\n LivingAreaLayout,\n LivingAreaSleeping,\n LocationAdmin,\n LocationAttribute,\n LocationDbPersistFailedError,\n LocationNotDeletableViaApiError,\n LocationWithGoogle,\n LocationWithGoogleGoogleResultOneOf,\n LocationWithGoogleVoiceOfMerchantResultOneOf,\n LocationsQueryBuilder,\n LocationsQueryResult,\n Lodging,\n LodgingMetadata,\n LodgingTimeOfDay,\n MatchStatus,\n MediaCategory,\n MediaFormat,\n MediaItem,\n MediaItemAttribution,\n MessageEnvelope,\n Metadata,\n MinimizedContact,\n MonthlyRange,\n MoreHoursType,\n OpenInfo,\n Parking,\n PaymentOptions,\n PersonalProtection,\n Pets,\n PhysicalDistancing,\n PlaceInfo,\n Policies,\n Pools,\n PostalAddress,\n Profile,\n Property,\n PutReviewReplyIdentifiers,\n PutReviewReplyRequest,\n PutReviewReplyResponse,\n QueryGBPLocationsRequest,\n QueryGBPLocationsResponse,\n QueryGoogleLocationsOptions,\n QueryGoogleLocationsRequest,\n QueryGoogleLocationsResponse,\n RecommendationReason,\n RegionSuggestion,\n RestoreInfo,\n Review,\n ReviewMetrics,\n ReviewReply,\n ReviewSortOrder,\n Role,\n SearchGoogleLocationsOptions,\n SearchGoogleLocationsOptionsCriteriaOneOf,\n SearchGoogleLocationsRequest,\n SearchGoogleLocationsRequestCriteriaOneOf,\n SearchGoogleLocationsResponse,\n SearchKeywordImpression,\n SearchKeywordImpressionImpressionsOneOf,\n ServiceArea,\n ServiceType,\n Services,\n SortOrder,\n Sorting,\n StartVerificationOptions,\n StartVerificationRequest,\n StartVerificationResponse,\n State,\n Status,\n SuggestEstablishmentsOptions,\n SuggestEstablishmentsRequest,\n SuggestEstablishmentsResponse,\n SuggestRegionsOptions,\n SuggestRegionsRequest,\n SuggestRegionsResponse,\n Sustainability,\n SustainabilityCertifications,\n SustainableSourcing,\n TimeOfDay,\n Transportation,\n UnimportedLocation,\n UnitTier,\n UpdateGoogleLocationOptions,\n UpdateGoogleLocationRequest,\n UpdateGoogleLocationResponse,\n UpdateLocation,\n UpdateLocationAttributesRequest,\n UpdateLocationAttributesResponse,\n UpdateLocationFoodMenusOptions,\n UpdateLocationFoodMenusRequest,\n UpdateLocationFoodMenusResponse,\n UpdateLocationLodgingOptions,\n UpdateLocationLodgingRequest,\n UpdateLocationLodgingResponse,\n UpdateLocationRequest,\n UpdateLocationResponse,\n VerificationMethod,\n VerificationOption,\n VerificationState,\n ViewsFromUnit,\n Violation,\n VoiceOfMerchantState,\n WasteReduction,\n WaterConservation,\n WebhookIdentityType,\n Wellness,\n utils,\n} from './gbp-location-v1-gbplocation-locations.universal.js';\n","import {\n getGbpLocation as publicGetGbpLocation,\n queryGbpLocations as publicQueryGbpLocations,\n typedQueryGbpLocations as publicTypedQueryGbpLocations,\n queryGoogleLocations as publicQueryGoogleLocations,\n getGoogleLocation as publicGetGoogleLocation,\n createLocation as publicCreateLocation,\n updateLocation as publicUpdateLocation,\n deleteLocation as publicDeleteLocation,\n createGoogleLocation as publicCreateGoogleLocation,\n deleteGoogleLocation as publicDeleteGoogleLocation,\n updateGoogleLocation as publicUpdateGoogleLocation,\n bulkCreateLocations as publicBulkCreateLocations,\n bulkDeleteLocations as publicBulkDeleteLocations,\n listGbpAccounts as publicListGbpAccounts,\n listUnimportedLocations as publicListUnimportedLocations,\n listReviews as publicListReviews,\n putReviewReply as publicPutReviewReply,\n deleteReviewReply as publicDeleteReviewReply,\n listMedia as publicListMedia,\n createMedia as publicCreateMedia,\n deleteMedia as publicDeleteMedia,\n updateLocationFoodMenus as publicUpdateLocationFoodMenus,\n updateLocationAttributes as publicUpdateLocationAttributes,\n getLocationAttributes as publicGetLocationAttributes,\n getLocationLodging as publicGetLocationLodging,\n updateLocationLodging as publicUpdateLocationLodging,\n listAttributeMetadata as publicListAttributeMetadata,\n listCategories as publicListCategories,\n getVerificationOptions as publicGetVerificationOptions,\n startVerification as publicStartVerification,\n completeVerification as publicCompleteVerification,\n getVoiceOfMerchant as publicGetVoiceOfMerchant,\n getLocationInsights as publicGetLocationInsights,\n listSearchKeywordImpressions as publicListSearchKeywordImpressions,\n inviteAdminToLocation as publicInviteAdminToLocation,\n getLocationAdmins as publicGetLocationAdmins,\n getAddressSchemaByCountryCode as publicGetAddressSchemaByCountryCode,\n suggestRegions as publicSuggestRegions,\n suggestEstablishments as publicSuggestEstablishments,\n searchGoogleLocations as publicSearchGoogleLocations,\n} from './gbp-location-v1-gbplocation-locations.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { BuildRESTFunction, MaybeContext } from '@wix/sdk-types';\nimport { HttpClient } from '@wix/sdk-types';\nimport { createQueryOverloadRouter } from '@wix/sdk-runtime/query-method-router';\nimport {\n GBPLocationQuery,\n LocationsQueryBuilder,\n typedQueryGbpLocations as universalTypedQueryGbpLocations,\n} from './gbp-location-v1-gbplocation-locations.universal.js';\n\nfunction customQueryGbpLocations(httpClient: HttpClient) {\n const router = /*#__PURE__*/ createQueryOverloadRouter({\n builderQueryFunction: () => publicQueryGbpLocations(httpClient)(),\n typedQueryFunction: (query: GBPLocationQuery) =>\n publicTypedQueryGbpLocations(httpClient)(query),\n hasOptionsParameter: false,\n });\n\n function overloadedQuery(): LocationsQueryBuilder;\n function overloadedQuery(\n query: GBPLocationQuery\n ): ReturnType<typeof universalTypedQueryGbpLocations>;\n function overloadedQuery(query?: GBPLocationQuery): any {\n return router(...arguments);\n }\n\n return overloadedQuery;\n}\n\nexport const getGbpLocation: MaybeContext<\n BuildRESTFunction<typeof publicGetGbpLocation> & typeof publicGetGbpLocation\n> = /*#__PURE__*/ createRESTModule(publicGetGbpLocation);\nexport const queryGoogleLocations: MaybeContext<\n BuildRESTFunction<typeof publicQueryGoogleLocations> &\n typeof publicQueryGoogleLocations\n> = /*#__PURE__*/ createRESTModule(publicQueryGoogleLocations);\nexport const getGoogleLocation: MaybeContext<\n BuildRESTFunction<typeof publicGetGoogleLocation> &\n typeof publicGetGoogleLocation\n> = /*#__PURE__*/ createRESTModule(publicGetGoogleLocation);\nexport const createLocation: MaybeContext<\n BuildRESTFunction<typeof publicCreateLocation> & typeof publicCreateLocation\n> = /*#__PURE__*/ createRESTModule(publicCreateLocation);\nexport const updateLocation: MaybeContext<\n BuildRESTFunction<typeof publicUpdateLocation> & typeof publicUpdateLocation\n> = /*#__PURE__*/ createRESTModule(publicUpdateLocation);\nexport const deleteLocation: MaybeContext<\n BuildRESTFunction<typeof publicDeleteLocation> & typeof publicDeleteLocation\n> = /*#__PURE__*/ createRESTModule(publicDeleteLocation);\nexport const createGoogleLocation: MaybeContext<\n BuildRESTFunction<typeof publicCreateGoogleLocation> &\n typeof publicCreateGoogleLocation\n> = /*#__PURE__*/ createRESTModule(publicCreateGoogleLocation);\nexport const deleteGoogleLocation: MaybeContext<\n BuildRESTFunction<typeof publicDeleteGoogleLocation> &\n typeof publicDeleteGoogleLocation\n> = /*#__PURE__*/ createRESTModule(publicDeleteGoogleLocation);\nexport const updateGoogleLocation: MaybeContext<\n BuildRESTFunction<typeof publicUpdateGoogleLocation> &\n typeof publicUpdateGoogleLocation\n> = /*#__PURE__*/ createRESTModule(publicUpdateGoogleLocation);\nexport const bulkCreateLocations: MaybeContext<\n BuildRESTFunction<typeof publicBulkCreateLocations> &\n typeof publicBulkCreateLocations\n> = /*#__PURE__*/ createRESTModule(publicBulkCreateLocations);\nexport const bulkDeleteLocations: MaybeContext<\n BuildRESTFunction<typeof publicBulkDeleteLocations> &\n typeof publicBulkDeleteLocations\n> = /*#__PURE__*/ createRESTModule(publicBulkDeleteLocations);\nexport const listGbpAccounts: MaybeContext<\n BuildRESTFunction<typeof publicListGbpAccounts> & typeof publicListGbpAccounts\n> = /*#__PURE__*/ createRESTModule(publicListGbpAccounts);\nexport const listUnimportedLocations: MaybeContext<\n BuildRESTFunction<typeof publicListUnimportedLocations> &\n typeof publicListUnimportedLocations\n> = /*#__PURE__*/ createRESTModule(publicListUnimportedLocations);\nexport const listReviews: MaybeContext<\n BuildRESTFunction<typeof publicListReviews> & typeof publicListReviews\n> = /*#__PURE__*/ createRESTModule(publicListReviews);\nexport const putReviewReply: MaybeContext<\n BuildRESTFunction<typeof publicPutReviewReply> & typeof publicPutReviewReply\n> = /*#__PURE__*/ createRESTModule(publicPutReviewReply);\nexport const deleteReviewReply: MaybeContext<\n BuildRESTFunction<typeof publicDeleteReviewReply> &\n typeof publicDeleteReviewReply\n> = /*#__PURE__*/ createRESTModule(publicDeleteReviewReply);\nexport const listMedia: MaybeContext<\n BuildRESTFunction<typeof publicListMedia> & typeof publicListMedia\n> = /*#__PURE__*/ createRESTModule(publicListMedia);\nexport const createMedia: MaybeContext<\n BuildRESTFunction<typeof publicCreateMedia> & typeof publicCreateMedia\n> = /*#__PURE__*/ createRESTModule(publicCreateMedia);\nexport const deleteMedia: MaybeContext<\n BuildRESTFunction<typeof publicDeleteMedia> & typeof publicDeleteMedia\n> = /*#__PURE__*/ createRESTModule(publicDeleteMedia);\n/** @internal */\nexport const updateLocationFoodMenus: MaybeContext<\n BuildRESTFunction<typeof publicUpdateLocationFoodMenus> &\n typeof publicUpdateLocationFoodMenus\n> = /*#__PURE__*/ createRESTModule(publicUpdateLocationFoodMenus);\nexport const updateLocationAttributes: MaybeContext<\n BuildRESTFunction<typeof publicUpdateLocationAttributes> &\n typeof publicUpdateLocationAttributes\n> = /*#__PURE__*/ createRESTModule(publicUpdateLocationAttributes);\nexport const getLocationAttributes: MaybeContext<\n BuildRESTFunction<typeof publicGetLocationAttributes> &\n typeof publicGetLocationAttributes\n> = /*#__PURE__*/ createRESTModule(publicGetLocationAttributes);\nexport const getLocationLodging: MaybeContext<\n BuildRESTFunction<typeof publicGetLocationLodging> &\n typeof publicGetLocationLodging\n> = /*#__PURE__*/ createRESTModule(publicGetLocationLodging);\nexport const updateLocationLodging: MaybeContext<\n BuildRESTFunction<typeof publicUpdateLocationLodging> &\n typeof publicUpdateLocationLodging\n> = /*#__PURE__*/ createRESTModule(publicUpdateLocationLodging);\nexport const listAttributeMetadata: MaybeContext<\n BuildRESTFunction<typeof publicListAttributeMetadata> &\n typeof publicListAttributeMetadata\n> = /*#__PURE__*/ createRESTModule(publicListAttributeMetadata);\nexport const listCategories: MaybeContext<\n BuildRESTFunction<typeof publicListCategories> & typeof publicListCategories\n> = /*#__PURE__*/ createRESTModule(publicListCategories);\nexport const getVerificationOptions: MaybeContext<\n BuildRESTFunction<typeof publicGetVerificationOptions> &\n typeof publicGetVerificationOptions\n> = /*#__PURE__*/ createRESTModule(publicGetVerificationOptions);\nexport const startVerification: MaybeContext<\n BuildRESTFunction<typeof publicStartVerification> &\n typeof publicStartVerification\n> = /*#__PURE__*/ createRESTModule(publicStartVerification);\nexport const completeVerification: MaybeContext<\n BuildRESTFunction<typeof publicCompleteVerification> &\n typeof publicCompleteVerification\n> = /*#__PURE__*/ createRESTModule(publicCompleteVerification);\nexport const getVoiceOfMerchant: MaybeContext<\n BuildRESTFunction<typeof publicGetVoiceOfMerchant> &\n typeof publicGetVoiceOfMerchant\n> = /*#__PURE__*/ createRESTModule(publicGetVoiceOfMerchant);\nexport const getLocationInsights: MaybeContext<\n BuildRESTFunction<typeof publicGetLocationInsights> &\n typeof publicGetLocationInsights\n> = /*#__PURE__*/ createRESTModule(publicGetLocationInsights);\nexport const listSearchKeywordImpressions: MaybeContext<\n BuildRESTFunction<typeof publicListSearchKeywordImpressions> &\n typeof publicListSearchKeywordImpressions\n> = /*#__PURE__*/ createRESTModule(publicListSearchKeywordImpressions);\nexport const inviteAdminToLocation: MaybeContext<\n BuildRESTFunction<typeof publicInviteAdminToLocation> &\n typeof publicInviteAdminToLocation\n> = /*#__PURE__*/ createRESTModule(publicInviteAdminToLocation);\nexport const getLocationAdmins: MaybeContext<\n BuildRESTFunction<typeof publicGetLocationAdmins> &\n typeof publicGetLocationAdmins\n> = /*#__PURE__*/ createRESTModule(publicGetLocationAdmins);\nexport const getAddressSchemaByCountryCode: MaybeContext<\n BuildRESTFunction<typeof publicGetAddressSchemaByCountryCode> &\n typeof publicGetAddressSchemaByCountryCode\n> = /*#__PURE__*/ createRESTModule(publicGetAddressSchemaByCountryCode);\nexport const suggestRegions: MaybeContext<\n BuildRESTFunction<typeof publicSuggestRegions> & typeof publicSuggestRegions\n> = /*#__PURE__*/ createRESTModule(publicSuggestRegions);\nexport const suggestEstablishments: MaybeContext<\n BuildRESTFunction<typeof publicSuggestEstablishments> &\n typeof publicSuggestEstablishments\n> = /*#__PURE__*/ createRESTModule(publicSuggestEstablishments);\nexport const searchGoogleLocations: MaybeContext<\n BuildRESTFunction<typeof publicSearchGoogleLocations> &\n typeof publicSearchGoogleLocations\n> = /*#__PURE__*/ createRESTModule(publicSearchGoogleLocations);\nexport const queryGbpLocations: MaybeContext<\n BuildRESTFunction<typeof customQueryGbpLocations> &\n typeof customQueryGbpLocations\n> = /*#__PURE__*/ createRESTModule(customQueryGbpLocations);\n\nexport {\n SortOrder,\n BusinessType,\n DayOfWeek,\n Status,\n State,\n RecommendationReason,\n ReviewSortOrder,\n MediaFormat,\n MediaCategory,\n AmenityException,\n EcoCertificate,\n UnitTier,\n BreeamCertification,\n LeedCertification,\n AttributeValueType,\n CategoryView,\n VerificationMethod,\n VerificationState,\n DailyMetric,\n Role,\n AddressFieldType,\n MatchStatus,\n WebhookIdentityType,\n} from './gbp-location-v1-gbplocation-locations.universal.js';\nexport {\n GBPLocation,\n PostalAddress,\n GetGBPLocationRequest,\n GetGBPLocationResponse,\n QueryGBPLocationsRequest,\n CursorQuery,\n CursorQueryPagingMethodOneOf,\n Sorting,\n CursorPaging,\n QueryGBPLocationsResponse,\n CursorPagingMetadata,\n Cursors,\n QueryGoogleLocationsRequest,\n QueryGoogleLocationsResponse,\n LocationWithGoogle,\n LocationWithGoogleGoogleResultOneOf,\n LocationWithGoogleVoiceOfMerchantResultOneOf,\n GoogleLocation,\n Category,\n Profile,\n ServiceArea,\n PlaceInfo,\n BusinessHours,\n TimeOfDay,\n LatLng,\n OpenInfo,\n Metadata,\n ApplicationError,\n VoiceOfMerchantState,\n GetGoogleLocationRequest,\n GetGoogleLocationResponse,\n CreateLocationRequest,\n CreateLocationResponse,\n UpdateLocationRequest,\n UpdateLocationResponse,\n DeleteLocationRequest,\n DeleteLocationResponse,\n CreateGoogleLocationRequest,\n CreateGoogleLocationResponse,\n GoogleApiCallFailedError,\n GoogleLocationValidationError,\n FieldViolation,\n LocationDbPersistFailedError,\n DeleteGoogleLocationRequest,\n DeleteGoogleLocationResponse,\n LocationNotDeletableViaApiError,\n UpdateGoogleLocationRequest,\n UpdateGoogleLocationResponse,\n InvalidUpdateMaskError,\n BulkCreateLocationsRequest,\n BulkCreateLocationsResponse,\n ItemMetadata,\n BulkCreateLocationResult,\n BulkActionMetadata,\n BulkDeleteLocationsRequest,\n BulkDeleteLocationsResponse,\n BulkDeleteLocationResult,\n ListGbpAccountsRequest,\n ListGbpAccountsResponse,\n GbpAccount,\n ListUnimportedLocationsRequest,\n ListUnimportedLocationsResponse,\n UnimportedLocation,\n ListReviewsRequest,\n ListReviewsResponse,\n Review,\n ReviewReply,\n ReviewMetrics,\n PutReviewReplyRequest,\n PutReviewReplyResponse,\n DeleteReviewReplyRequest,\n DeleteReviewReplyResponse,\n ListMediaRequest,\n ListMediaResponse,\n MediaItem,\n MediaItemAttribution,\n CreateMediaRequest,\n CreateMediaResponse,\n DeleteMediaRequest,\n DeleteMediaResponse,\n UpdateLocationFoodMenusRequest,\n UpdateLocationFoodMenusResponse,\n UpdateLocationAttributesRequest,\n LocationAttribute,\n UpdateLocationAttributesResponse,\n InvalidValueJsonError,\n Violation,\n GetLocationAttributesRequest,\n GetLocationAttributesResponse,\n GetLocationLodgingRequest,\n GetLocationLodgingResponse,\n Lodging,\n LivingArea,\n LivingAreaAccessibility,\n LivingAreaEating,\n LivingAreaFeatures,\n LivingAreaLayout,\n LivingAreaSleeping,\n ViewsFromUnit,\n GuestUnitFeatures,\n EnhancedCleaning,\n IncreasedFoodSafety,\n MinimizedContact,\n PersonalProtection,\n PhysicalDistancing,\n LodgingTimeOfDay,\n PaymentOptions,\n LanguageSpoken,\n EnergyEfficiency,\n SustainabilityCertifications,\n EcoCertification,\n SustainableSourcing,\n WasteReduction,\n WaterConservation,\n Accessibility,\n Activities,\n Business,\n Connectivity,\n Families,\n FoodAndDrink,\n GuestUnitType,\n HealthAndSafety,\n Housekeeping,\n LodgingMetadata,\n Parking,\n Pets,\n Policies,\n Pools,\n Property,\n Services,\n Sustainability,\n Transportation,\n Wellness,\n UpdateLocationLodgingRequest,\n UpdateLocationLodgingResponse,\n ListAttributeMetadataRequest,\n ListAttributeMetadataRequestLookupOneOf,\n CategoryRegion,\n ListAttributeMetadataResponse,\n AttributeMetadata,\n AttributeValueMetadata,\n AttributeValueMetadataValueOneOf,\n ListCategoriesRequest,\n ListCategoriesResponse,\n CategoryMetadata,\n ServiceType,\n MoreHoursType,\n GetVerificationOptionsRequest,\n GetVerificationOptionsResponse,\n VerificationOption,\n StartVerificationRequest,\n StartVerificationResponse,\n CompleteVerificationRequest,\n CompleteVerificationResponse,\n GetVoiceOfMerchantRequest,\n GetVoiceOfMerchantResponse,\n GetLocationInsightsRequest,\n InsightsTimeRange,\n GetLocationInsightsResponse,\n InsightsMetric,\n DailyMetricValue,\n ListSearchKeywordImpressionsRequest,\n MonthlyRange,\n CalendarMonth,\n ListSearchKeywordImpressionsResponse,\n SearchKeywordImpression,\n SearchKeywordImpressionImpressionsOneOf,\n InviteAdminToLocationRequest,\n InviteAdminToLocationResponse,\n GetLocationAdminsRequest,\n GetLocationAdminsResponse,\n LocationAdmin,\n GetAddressSchemaByCountryCodeRequest,\n GetAddressSchemaByCountryCodeResponse,\n AddressSchema,\n SuggestRegionsRequest,\n SuggestRegionsResponse,\n RegionSuggestion,\n SuggestEstablishmentsRequest,\n SuggestEstablishmentsResponse,\n EstablishmentSuggestion,\n SearchGoogleLocationsRequest,\n SearchGoogleLocationsRequestCriteriaOneOf,\n SearchGoogleLocationsResponse,\n GoogleLocationMatch,\n DomainEvent,\n DomainEventBodyOneOf,\n EntityCreatedEvent,\n RestoreInfo,\n EntityUpdatedEvent,\n EntityDeletedEvent,\n ActionEvent,\n Empty,\n MessageEnvelope,\n IdentificationData,\n IdentificationDataIdOneOf,\n AccountInfo,\n LocationsQueryResult,\n LocationsQueryBuilder,\n GBPLocationQuerySpec,\n QueryGoogleLocationsOptions,\n UpdateLocation,\n CreateGoogleLocationOptions,\n UpdateGoogleLocationOptions,\n BulkCreateLocationsOptions,\n ListGbpAccountsOptions,\n ListUnimportedLocationsOptions,\n ListReviewsOptions,\n PutReviewReplyIdentifiers,\n DeleteReviewReplyIdentifiers,\n ListMediaOptions,\n CreateMediaOptions,\n DeleteMediaIdentifiers,\n UpdateLocationFoodMenusOptions,\n UpdateLocationLodgingOptions,\n ListAttributeMetadataOptions,\n ListAttributeMetadataOptionsLookupOneOf,\n ListCategoriesOptions,\n StartVerificationOptions,\n CompleteVerificationOptions,\n GetLocationInsightsOptions,\n ListSearchKeywordImpressionsOptions,\n InviteAdminToLocationOptions,\n GetAddressSchemaByCountryCodeOptions,\n SuggestRegionsOptions,\n SuggestEstablishmentsOptions,\n SearchGoogleLocationsOptions,\n SearchGoogleLocationsOptionsCriteriaOneOf,\n} from './gbp-location-v1-gbplocation-locations.universal.js';\nexport { utils } from './gbp-location-v1-gbplocation-locations.universal.js';\nexport {\n SortOrderWithLiterals,\n BusinessTypeWithLiterals,\n DayOfWeekWithLiterals,\n StatusWithLiterals,\n StateWithLiterals,\n RecommendationReasonWithLiterals,\n ReviewSortOrderWithLiterals,\n MediaFormatWithLiterals,\n MediaCategoryWithLiterals,\n AmenityExceptionWithLiterals,\n EcoCertificateWithLiterals,\n UnitTierWithLiterals,\n BreeamCertificationWithLiterals,\n LeedCertificationWithLiterals,\n AttributeValueTypeWithLiterals,\n CategoryViewWithLiterals,\n VerificationMethodWithLiterals,\n VerificationStateWithLiterals,\n DailyMetricWithLiterals,\n RoleWithLiterals,\n AddressFieldTypeWithLiterals,\n MatchStatusWithLiterals,\n WebhookIdentityTypeWithLiterals,\n CreateLocationApplicationErrors,\n CreateGoogleLocationApplicationErrors,\n DeleteGoogleLocationApplicationErrors,\n UpdateGoogleLocationApplicationErrors,\n BulkCreateLocationsApplicationErrors,\n ListGbpAccountsApplicationErrors,\n ListUnimportedLocationsApplicationErrors,\n ListReviewsApplicationErrors,\n PutReviewReplyApplicationErrors,\n DeleteReviewReplyApplicationErrors,\n ListMediaApplicationErrors,\n CreateMediaApplicationErrors,\n DeleteMediaApplicationErrors,\n UpdateLocationFoodMenusApplicationErrors,\n UpdateLocationAttributesApplicationErrors,\n GetLocationAttributesApplicationErrors,\n GetLocationLodgingApplicationErrors,\n UpdateLocationLodgingApplicationErrors,\n ListAttributeMetadataApplicationErrors,\n ListCategoriesApplicationErrors,\n GetVerificationOptionsApplicationErrors,\n StartVerificationApplicationErrors,\n CompleteVerificationApplicationErrors,\n ListSearchKeywordImpressionsApplicationErrors,\n GetAddressSchemaByCountryCodeApplicationErrors,\n SuggestRegionsApplicationErrors,\n SuggestEstablishmentsApplicationErrors,\n SearchGoogleLocationsApplicationErrors,\n CommonQueryWithEntityContext,\n GBPLocationQuery,\n} from './gbp-location-v1-gbplocation-locations.universal.js';\n"],"mappings":"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","names":["bulkCreateLocations","bulkDeleteLocations","completeVerification","createGoogleLocation","createLocation","createMedia","deleteGoogleLocation","deleteLocation","deleteMedia","deleteReviewReply","getAddressSchemaByCountryCode","getGbpLocation","getGoogleLocation","getLocationAdmins","getLocationAttributes","getLocationInsights","getLocationLodging","getVerificationOptions","getVoiceOfMerchant","inviteAdminToLocation","listAttributeMetadata","listCategories","listGbpAccounts","listMedia","listReviews","listSearchKeywordImpressions","listUnimportedLocations","putReviewReply","queryGbpLocations","queryGoogleLocations","searchGoogleLocations","startVerification","suggestEstablishments","suggestRegions","updateGoogleLocation","updateLocation","updateLocationAttributes","updateLocationFoodMenus","updateLocationLodging","import_float","import_timestamp","import_rest_modules","payload","import_transform_paths","SortOrder","BusinessType","DayOfWeek","Status","State","RecommendationReason","ReviewSortOrder","MediaFormat","MediaCategory","AmenityException","EcoCertificate","UnitTier","BreeamCertification","LeedCertification","AttributeValueType","CategoryView","VerificationMethod","VerificationState","DailyMetric","Role","AddressFieldType","MatchStatus","WebhookIdentityType","getGbpLocation","sdkTransformError","queryGbpLocations","queryGoogleLocations","getGoogleLocation","createLocation","updateLocation","deleteLocation","createGoogleLocation","deleteGoogleLocation","updateGoogleLocation","bulkCreateLocations","bulkDeleteLocations","listGbpAccounts","listUnimportedLocations","listReviews","putReviewReply","deleteReviewReply","listMedia","createMedia","deleteMedia","updateLocationFoodMenus","updateLocationAttributes","getLocationAttributes","getLocationLodging","updateLocationLodging","listAttributeMetadata","listCategories","getVerificationOptions","startVerification","completeVerification","getVoiceOfMerchant","getLocationInsights","listSearchKeywordImpressions","inviteAdminToLocation","getLocationAdmins","getAddressSchemaByCountryCode","suggestRegions","suggestEstablishments","searchGoogleLocations","getGbpLocation","queryGbpLocations","typedQueryGbpLocations","queryGoogleLocations","getGoogleLocation","createLocation","updateLocation","deleteLocation","createGoogleLocation","deleteGoogleLocation","updateGoogleLocation","bulkCreateLocations","bulkDeleteLocations","listGbpAccounts","listUnimportedLocations","listReviews","putReviewReply","deleteReviewReply","listMedia","createMedia","deleteMedia","updateLocationFoodMenus","updateLocationAttributes","getLocationAttributes","getLocationLodging","updateLocationLodging","listAttributeMetadata","listCategories","getVerificationOptions","startVerification","completeVerification","getVoiceOfMerchant","getLocationInsights","listSearchKeywordImpressions","inviteAdminToLocation","getLocationAdmins","getAddressSchemaByCountryCode","suggestRegions","suggestEstablishments","searchGoogleLocations","import_rest_modules","queryGbpLocations","typedQueryGbpLocations","getGbpLocation","queryGoogleLocations","getGoogleLocation","createLocation","updateLocation","deleteLocation","createGoogleLocation","deleteGoogleLocation","updateGoogleLocation","bulkCreateLocations","bulkDeleteLocations","listGbpAccounts","listUnimportedLocations","listReviews","putReviewReply","deleteReviewReply","listMedia","createMedia","deleteMedia","updateLocationFoodMenus","updateLocationAttributes","getLocationAttributes","getLocationLodging","updateLocationLodging","listAttributeMetadata","listCategories","getVerificationOptions","startVerification","completeVerification","getVoiceOfMerchant","getLocationInsights","listSearchKeywordImpressions","inviteAdminToLocation","getLocationAdmins","getAddressSchemaByCountryCode","suggestRegions","suggestEstablishments","searchGoogleLocations"]}
|