{
  "kind": "discovery#restDescription",
  "discoveryVersion": "v1",
  "id": "mybusiness:v4",
  "name": "mybusiness",
  "canonicalName": "My Business",
  "version": "v4",
  "revision": "0",
  "title": "Google My Business API",
  "description": "The Google My Business API provides an interface for managing business location information on Google.",
  "ownerDomain": "google.com",
  "ownerName": "Google",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
   },
  "documentationLink": "https://developers.google.com/my-business/",
  "protocol": "rest",
  "rootUrl": "https://mybusiness.googleapis.com/",
  "mtlsRootUrl": "https://mybusiness.mtls.googleapis.com/",
  "servicePath": "",
  "baseUrl": "https://mybusiness.googleapis.com/",
  "batchPath": "batch",
  "version_module": true,
  "fullyEncodeReservedExpansion": true,
  "parameters": {
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "type": "string",
      "description": "Data format for response.",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "location": "query"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "key": {
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "enum": [
        "1",
        "2"
      ],
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "location": "query"
    }
  },
  "schemas": {
    "AcceptInvitationRequest": {
      "id": "AcceptInvitationRequest",
      "description": "Request message for AccessControl.AcceptInvitation.",
      "type": "object",
      "properties": {
      }
    },
    "Empty": {
      "id": "Empty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.",
      "type": "object",
      "properties": {
      }
    },
    "DeclineInvitationRequest": {
      "id": "DeclineInvitationRequest",
      "description": "Request message for AccessControl.DeclineInvitation.",
      "type": "object",
      "properties": {
      }
    },
    "ListInvitationsResponse": {
      "id": "ListInvitationsResponse",
      "description": "Response message for AccessControl.ListInvitations.",
      "type": "object",
      "properties": {
        "invitations": {
          "description": "A collection of location invitations that are pending for the account. The number of invitations listed here cannot exceed 1000.",
          "type": "array",
          "items": {
            "$ref": "Invitation"
          }
        }
      }
    },
    "Invitation": {
      "id": "Invitation",
      "description": "Output only. Represents a pending invitation.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name for the invitation.",
          "type": "string"
        },
        "targetAccount": {
          "description": "The sparsely populated account this invitation is for.",
          "$ref": "Account"
        },
        "targetLocation": {
          "description": "The target location this invitation is for.",
          "$ref": "TargetLocation"
        },
        "role": {
          "description": "The invited role on the account.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The admin has owner-level access and is the primary owner. (Displays as 'Primary Owner' in UI).",
            "The admin has owner-level access. (Displays as 'Owner' in UI).",
            "The admin has managerial access.",
            "The admin can manage social (Google+) pages. (Displays as 'Site Manager' in UI)."
          ],
          "enum": [
            "ADMIN_ROLE_UNSPECIFIED",
            "OWNER",
            "CO_OWNER",
            "MANAGER",
            "COMMUNITY_MANAGER"
          ]
        }
      }
    },
    "Account": {
      "id": "Account",
      "description": "An account is a container for your business's locations. If you are the only user who manages locations for your business, you can use your personal Google Account. To share management of locations with multiple users, [create a business account] (https:\/\/support.google.com\/business\/answer\/6085339?ref_topic=6085325).",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name, in the format `accounts\/{account_id}`.",
          "type": "string"
        },
        "accountName": {
          "description": "The name of the account. *Note:* For an account with AccountType `PERSONAL`, this is the first and last name of the user account.",
          "type": "string"
        },
        "type": {
          "description": "Output only. Specifies the AccountType of this account.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "An end-user account.",
            "A group of Locations. For more information, see the [help center article] (https:\/\/support.google.com\/business\/answer\/6085326)",
            "A User Group for segregating organization staff in groups. For more information, see the [help center article](https:\/\/support.google.com\/business\/answer\/7655731)",
            "An organization representing a company. For more information, see the [help center article](https:\/\/support.google.com\/business\/answer\/7663063)"
          ],
          "enum": [
            "ACCOUNT_TYPE_UNSPECIFIED",
            "PERSONAL",
            "LOCATION_GROUP",
            "USER_GROUP",
            "ORGANIZATION"
          ]
        },
        "role": {
          "description": "Output only. Specifies the AccountRole the caller has for this account.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The user owns this account. (Displays as 'Primary Owner' in UI).",
            "The user is a co-owner of the account. (Displays as 'Owner' in UI).",
            "The user can manage this account.",
            "The user can manage social (Google+) pages for the account. (Displays as 'Site Manager' in UI)."
          ],
          "enum": [
            "ACCOUNT_ROLE_UNSPECIFIED",
            "OWNER",
            "CO_OWNER",
            "MANAGER",
            "COMMUNITY_MANAGER"
          ]
        },
        "state": {
          "description": "Output only. Indicates the AccountState of this account.",
          "$ref": "AccountState"
        },
        "accountNumber": {
          "description": "Account reference number if provisioned.",
          "type": "string"
        },
        "permissionLevel": {
          "description": "Output only. Specifies the PermissionLevel the caller has for this account.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The user has owner level permission.",
            "The user has member level permission."
          ],
          "enum": [
            "PERMISSION_LEVEL_UNSPECIFIED",
            "OWNER_LEVEL",
            "MEMBER_LEVEL"
          ]
        },
        "organizationInfo": {
          "description": "Additional info for an organization. This is populated only for an organization account.",
          "$ref": "OrganizationInfo"
        }
      }
    },
    "AccountState": {
      "id": "AccountState",
      "description": "Indicates status of the account, such as whether the account has been verified by Google.",
      "type": "object",
      "properties": {
        "status": {
          "description": "If verified, future locations that are created are automatically connected to Google Maps, and have Google+ pages created, without requiring moderation.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Verified account.",
            "Account that is not verified, and verification has not been requested.",
            "Account that is not verified, but verification has been requested."
          ],
          "enum": [
            "ACCOUNT_STATUS_UNSPECIFIED",
            "VERIFIED",
            "UNVERIFIED",
            "VERIFICATION_REQUESTED"
          ]
        }
      }
    },
    "OrganizationInfo": {
      "id": "OrganizationInfo",
      "description": "Additional Info stored for an organization.",
      "type": "object",
      "properties": {
        "registeredDomain": {
          "description": "The registered domain for the account.",
          "type": "string"
        },
        "postalAddress": {
          "description": "The postal address for the account.",
          "$ref": "PostalAddress"
        },
        "phoneNumber": {
          "description": "The contact number for the organization.",
          "type": "string"
        }
      }
    },
    "PostalAddress": {
      "id": "PostalAddress",
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input \/ editing: - Use an i18n-ready address widget such as https:\/\/github.com\/google\/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https:\/\/support.google.com\/business\/answer\/6397478",
      "type": "object",
      "properties": {
        "revision": {
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.",
          "type": "integer",
          "format": "int32"
        },
        "regionCode": {
          "description": "Required. CLDR region code of the country\/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http:\/\/cldr.unicode.org\/ and http:\/\/www.unicode.org\/cldr\/charts\/30\/supplemental\/territory_information.html for details. Example: \"CH\" for Switzerland.",
          "type": "string"
        },
        "languageCode": {
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country\/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\".",
          "type": "string"
        },
        "postalCode": {
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state\/zip validation in the U.S.A.).",
          "type": "string"
        },
        "sortingCode": {
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. C\u00F4te d'Ivoire).",
          "type": "string"
        },
        "administrativeArea": {
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.",
          "type": "string"
        },
        "locality": {
          "description": "Optional. Generally refers to the city\/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.",
          "type": "string"
        },
        "sublocality": {
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.",
          "type": "string"
        },
        "addressLines": {
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country\/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "recipients": {
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "organization": {
          "description": "Optional. The name of the organization at the address.",
          "type": "string"
        }
      }
    },
    "TargetLocation": {
      "id": "TargetLocation",
      "description": "Represents a target location for a pending invitation.",
      "type": "object",
      "properties": {
        "locationName": {
          "description": "The name of the location to which the user is invited.",
          "type": "string"
        },
        "locationAddress": {
          "description": "The address of the location to which the user is invited.",
          "type": "string"
        }
      }
    },
    "ListAccountAdminsResponse": {
      "id": "ListAccountAdminsResponse",
      "description": "Response message for AccessControl.ListAccountAdmins.",
      "type": "object",
      "properties": {
        "admins": {
          "description": "A collection of Admin instances.",
          "type": "array",
          "items": {
            "$ref": "Admin"
          }
        }
      }
    },
    "Admin": {
      "id": "Admin",
      "description": "An administrator of an Account or a Location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name. For account admins, this is in the form: `accounts\/{account_id}\/admins\/{admin_id}` For location admins, this is in the form: `accounts\/{account_id}\/locations\/{location_id}\/admins\/{admin_id}`",
          "type": "string"
        },
        "adminName": {
          "description": "The name of the admin. When making the initial invitation, this is the invitee's email address. On `GET` calls, the user's email address is returned if the invitation is still pending. Otherwise, it contains the user's first and last names.",
          "type": "string"
        },
        "role": {
          "description": "Specifies the AdminRole that this admin uses with the specified Account or Location resource.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The admin has owner-level access and is the primary owner. (Displays as 'Primary Owner' in UI).",
            "The admin has owner-level access. (Displays as 'Owner' in UI).",
            "The admin has managerial access.",
            "The admin can manage social (Google+) pages. (Displays as 'Site Manager' in UI)."
          ],
          "enum": [
            "ADMIN_ROLE_UNSPECIFIED",
            "OWNER",
            "CO_OWNER",
            "MANAGER",
            "COMMUNITY_MANAGER"
          ]
        },
        "pendingInvitation": {
          "description": "Output only. Indicates whether this admin has a pending invitation for the specified resource.",
          "type": "boolean"
        }
      }
    },
    "ListLocationAdminsResponse": {
      "id": "ListLocationAdminsResponse",
      "description": "Response message for AccessControl.ListLocationAdmins.",
      "type": "object",
      "properties": {
        "admins": {
          "description": "A collection of Admin instances.",
          "type": "array",
          "items": {
            "$ref": "Admin"
          }
        }
      }
    },
    "ListAccountsResponse": {
      "id": "ListAccountsResponse",
      "description": "Response message for Accounts.ListAccounts.",
      "type": "object",
      "properties": {
        "accounts": {
          "description": "A collection of accounts to which the user has access. The personal account of the user doing the query will always be the first item of the result, unless it is filtered out.",
          "type": "array",
          "items": {
            "$ref": "Account"
          }
        },
        "nextPageToken": {
          "description": "If the number of accounts exceeds the requested page size, this field is populated with a token to fetch the next page of accounts on a subsequent call to `accounts.list`. If there are no more accounts, this field is not present in the response.",
          "type": "string"
        }
      }
    },
    "GenerateAccountNumberRequest": {
      "id": "GenerateAccountNumberRequest",
      "description": "Request message for Accounts.GenerateAccountNumber.",
      "type": "object",
      "properties": {
      }
    },
    "Notifications": {
      "id": "Notifications",
      "description": "A Google Cloud Pub\/Sub topic where notifications can be published when a location is updated or has a new review. There will be only one notification settings resource per-account.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. The notifications resource name.",
          "type": "string"
        },
        "topicName": {
          "description": "The Google Cloud Pub\/Sub topic that will receive notifications when locations managed by this account are updated. If unset, no notifications will be posted. The account mybusiness-api-pubsub@system.gserviceaccount.com must have at least Publish permissions on the Cloud Pub\/Sub topic.",
          "type": "string"
        },
        "notificationTypes": {
          "description": "The types of notifications that will be sent to the Cloud Pub\/Sub topic. At least one must be specified. To stop receiving notifications entirely, use DeleteNotifications.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "No notification type. Will not match any notifications.",
              "The location has Google updates for review. The location_name field on the notification will provide the resource name of the location with Google updates.",
              "A new review has been added to the location. The review_name field on the notification will provide the resource name of the review that was added, and location_name will have the location's resource name.",
              "A review on the location has been updated. The review_name field on the notification will provide the resource name of the review that was added, and location_name will have the location's resource name.",
              "A new media item has been added to the location by a Google Maps user. The notification will provide the resource name of the new media item.",
              "A new question is added to the location. The notification will provide the resource name of question.",
              "A question of the location is updated. The notification will provide the resource name of question.",
              "A new answer is added to the location. The notification will provide the resource name of question and answer.",
              "An answer of the location is updated. The notification will provide the resource name of question and answer.",
              "The LocationState of the Location was updated. The Notification will contain the field mask of the updated LocationState fields."
            ],
            "enum": [
              "NOTIFICATION_TYPE_UNSPECIFIED",
              "GOOGLE_UPDATE",
              "NEW_REVIEW",
              "UPDATED_REVIEW",
              "NEW_CUSTOMER_MEDIA",
              "NEW_QUESTION",
              "UPDATED_QUESTION",
              "NEW_ANSWER",
              "UPDATED_ANSWER",
              "UPDATED_LOCATION_STATE"
            ]
          }
        }
      }
    },
    "ListBusinessCategoriesResponse": {
      "id": "ListBusinessCategoriesResponse",
      "type": "object",
      "properties": {
        "categories": {
          "description": "The categories. Categories are BASIC view. They don't contain any ServiceType information.",
          "type": "array",
          "items": {
            "$ref": "Category"
          }
        },
        "totalCategoryCount": {
          "description": "The total number of categories for the request parameters.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "If the number of categories exceeded the requested page size, this field will be populated with a token to fetch the next page of categories on a subsequent call to `ListBusinessCategories`.",
          "type": "string"
        }
      }
    },
    "Category": {
      "id": "Category",
      "description": "A category describing what this business is (not what it does). For a list of valid category IDs, and the mappings to their human-readable names, see [categories.list](https:\/\/developers.google.com\/my-business\/reference\/rest\/v4\/categories\/list).",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "@OutputOnly. The human-readable name of the category. This is set when reading the location. When modifying the location, `category_id` must be set.",
          "type": "string"
        },
        "categoryId": {
          "description": "@OutputOnly. A stable ID (provided by Google) for this category. The `category_id` must be specified when modifying the category (when creating or updating a location).",
          "type": "string"
        },
        "serviceTypes": {
          "description": "@OutputOnly. A list of all the service types that are available for this business category.",
          "type": "array",
          "items": {
            "$ref": "ServiceType"
          }
        },
        "moreHoursTypes": {
          "description": "Output only. More hours types that are available for this business category.",
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "MoreHoursType"
          }
        }
      }
    },
    "ServiceType": {
      "id": "ServiceType",
      "description": "A message describing a service type that the business offers.",
      "type": "object",
      "properties": {
        "serviceTypeId": {
          "description": "Output only. A stable ID (provided by Google) for this service type.",
          "readOnly": true,
          "type": "string"
        },
        "displayName": {
          "description": "Output only. The human-readable display name for the service type.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "MoreHoursType": {
      "id": "MoreHoursType",
      "description": "More hours types that a business can offers, in addition to its regular hours.",
      "type": "object",
      "properties": {
        "hoursTypeId": {
          "description": "Output only. A stable ID provided by Google for this hours type.",
          "readOnly": true,
          "type": "string"
        },
        "displayName": {
          "description": "Output only. The human-readable English display name for the hours type.",
          "readOnly": true,
          "type": "string"
        },
        "localizedDisplayName": {
          "description": "Output only. The human-readable localized display name for the hours type.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "BatchGetBusinessCategoriesResponse": {
      "id": "BatchGetBusinessCategoriesResponse",
      "description": "Response message for BusinessCategories.BatchGetBusinessCategories.",
      "type": "object",
      "properties": {
        "categories": {
          "description": "Categories that match the GConcept ids provided in the request. They will not come in the same order as category ids in the request.",
          "type": "array",
          "items": {
            "$ref": "Category"
          }
        }
      }
    },
    "FollowersMetadata": {
      "id": "FollowersMetadata",
      "description": "Follower metadata for a location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name for this. accounts\/{account_id}\/locations\/{location_id}\/followers\/metadata",
          "type": "string"
        },
        "count": {
          "description": "Total number of followers for the location.",
          "type": "string",
          "format": "uint64"
        }
      }
    },
    "FoodMenus": {
      "id": "FoodMenus",
      "description": "Menus of a business that serve food dishes.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/foodMenus`",
          "type": "string"
        },
        "menus": {
          "description": "Optional. A collection of food menus.",
          "type": "array",
          "items": {
            "$ref": "FoodMenu"
          }
        }
      }
    },
    "FoodMenu": {
      "id": "FoodMenu",
      "description": "Menu of a business that serves food dishes.",
      "type": "object",
      "properties": {
        "labels": {
          "description": "Required. Language-tagged labels for the menu. E.g. \"menu\", \"lunch special\". Display names should be 140 characters or less, with descriptions 1,000 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "MenuLabel"
          }
        },
        "sourceUrl": {
          "description": "Optional. Source URL of menu if there is a webpage to go to.",
          "type": "string"
        },
        "sections": {
          "description": "Required. Sections of the menu.",
          "type": "array",
          "items": {
            "$ref": "FoodMenuSection"
          }
        },
        "cuisines": {
          "description": "Optional. Cuisine information for the food menu. It is highly recommended to provide this field.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Cuisine unspecified",
              "American food",
              "Asian food",
              "Brazilian food",
              "Breakfast",
              "Brunch",
              "Chicken",
              "Chinese food",
              "Family style cuisine",
              "Fast food",
              "French food",
              "Greek food",
              "German food",
              "Hamburger",
              "Indian food",
              "Indonesian food",
              "Italian food",
              "Japanese food",
              "Korean food",
              "Latin American food",
              "Mediterranean food",
              "Mexican food",
              "Pakistani food",
              "Pizza",
              "Seafood",
              "Spanish food",
              "Sushi",
              "Thai food",
              "Turkish food",
              "Vegetarian Food",
              "Vietnamese food",
              "Other cuisine"
            ],
            "enum": [
              "CUISINE_UNSPECIFIED",
              "AMERICAN",
              "ASIAN",
              "BRAZILIAN",
              "BREAK_FAST",
              "BRUNCH",
              "CHICKEN",
              "CHINESE",
              "FAMILY",
              "FAST_FOOD",
              "FRENCH",
              "GREEK",
              "GERMAN",
              "HAMBURGER",
              "INDIAN",
              "INDONESIAN",
              "ITALIAN",
              "JAPANESE",
              "KOREAN",
              "LATIN_AMERICAN",
              "MEDITERRANEAN",
              "MEXICAN",
              "PAKISTANI",
              "PIZZA",
              "SEAFOOD",
              "SPANISH",
              "SUSHI",
              "THAI",
              "TURKISH",
              "VEGETARIAN",
              "VIETNAMESE",
              "OTHER_CUISINE"
            ]
          }
        }
      }
    },
    "MenuLabel": {
      "id": "MenuLabel",
      "description": "Label to be used when displaying the menu and its various sub-components.",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "Required. Display name of the component.",
          "type": "string"
        },
        "description": {
          "description": "Optional. Supplementary information of the component.",
          "type": "string"
        },
        "languageCode": {
          "description": "Optional. The BCP 47 code of language. If the language is not available, it will default to English.",
          "type": "string"
        }
      }
    },
    "FoodMenuSection": {
      "id": "FoodMenuSection",
      "description": "Section of a menu. It can contain multiple items\/dishes.",
      "type": "object",
      "properties": {
        "labels": {
          "description": "Required. Language tagged labels for this menu section. Display names should be 140 characters or less, with descriptions 1,000 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "MenuLabel"
          }
        },
        "items": {
          "description": "Required. Items of the section. Each Section must have at least an item.",
          "type": "array",
          "items": {
            "$ref": "FoodMenuItem"
          }
        }
      }
    },
    "FoodMenuItem": {
      "id": "FoodMenuItem",
      "description": "Item of a Section. It can be the dish itself, or can contain multiple FoodMenuItemOption.",
      "type": "object",
      "properties": {
        "labels": {
          "description": "Required. Language tagged labels for this menu item. Display names should be 140 characters or less, with descriptions 1,000 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "MenuLabel"
          }
        },
        "attributes": {
          "description": "Required. Detailed attributes of the item. When item options are specified, this is considered as the base attributes and populate to each options.",
          "$ref": "FoodMenuItemAttributes"
        },
        "options": {
          "description": "Optional. This is for an item that comes in multiple different options, and users are required to make choices. E.g. \"regular\" vs. \"large\" pizza. When options are specified, labels and attributes at item level will automatically become the first option's labels and attributes. Clients only need to specify other additional food options in this field.",
          "type": "array",
          "items": {
            "$ref": "FoodMenuItemOption"
          }
        }
      }
    },
    "FoodMenuItemAttributes": {
      "id": "FoodMenuItemAttributes",
      "description": "Attributes of a food item\/dish.",
      "type": "object",
      "properties": {
        "price": {
          "description": "Required. Price of the food dish.",
          "$ref": "Money"
        },
        "spiciness": {
          "description": "Optional. Spiciness level of the food dish.",
          "type": "string",
          "enumDescriptions": [
            "Level unspecified",
            "Denotion of mild spicy.",
            "Denotion of medium spicy.",
            "Denotion of hot spicy. The most spiciest level."
          ],
          "enum": [
            "SPICINESS_UNSPECIFIED",
            "MILD",
            "MEDIUM",
            "HOT"
          ]
        },
        "allergen": {
          "description": "Optional. Allergens associated with the food dish. It is highly recommended to provide this field.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Allergen unspecified",
              "Dairy related allergen",
              "Egg related allergen",
              "Fish related allergen",
              "Peanut related allergen",
              "Shellfish related allergen",
              "Soy related allergen",
              "Tree nut related allergen",
              "Wheat related allergen"
            ],
            "enum": [
              "ALLERGEN_UNSPECIFIED",
              "DAIRY",
              "EGG",
              "FISH",
              "PEANUT",
              "SHELLFISH",
              "SOY",
              "TREE_NUT",
              "WHEAT"
            ]
          }
        },
        "dietaryRestriction": {
          "description": "Optional. Dietary information of the food dish. It is highly recommended to provide this field.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Dietary type unspecified",
              "Denotion of the food as a halal dish.",
              "Denotion of the food as a kosher dish.",
              "Denotion of the food as an organic dish.",
              "Denotion of the food as a vegan dish.",
              "Denotion of the food as a vegetarian dish."
            ],
            "enum": [
              "DIETARY_RESTRICTION_UNSPECIFIED",
              "HALAL",
              "KOSHER",
              "ORGANIC",
              "VEGAN",
              "VEGETARIAN"
            ]
          }
        },
        "nutritionFacts": {
          "description": "Optional. Nutrition facts of the food dish option. It is highly recommended to provide this field.",
          "$ref": "NutritionFacts"
        },
        "ingredients": {
          "description": "Optional. Ingredients of the food dish option.",
          "type": "array",
          "items": {
            "$ref": "Ingredient"
          }
        },
        "servesNumPeople": {
          "description": "Optional. Number of people can be served by this food dish option.",
          "type": "integer",
          "format": "int32"
        },
        "preparationMethods": {
          "description": "Optional. Methods on how the food dish option is prepared.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Preparation method unspecified",
              "Baked method",
              "Barbecued method",
              "Basted method",
              "Blanched method",
              "Boiled method",
              "Braised method",
              "Coddled method",
              "Fermented method",
              "Fried method",
              "Grilled method",
              "Kneaded method",
              "Marinated method",
              "Pan fried method",
              "Pickled method",
              "Pressure cooked method",
              "Roasted method",
              "Sauteed method",
              "Seared method",
              "Simmered method",
              "Smoked method",
              "Steamed method",
              "Steeped method",
              "Stir fried method",
              "Other method"
            ],
            "enum": [
              "PREPARATION_METHOD_UNSPECIFIED",
              "BAKED",
              "BARBECUED",
              "BASTED",
              "BLANCHED",
              "BOILED",
              "BRAISED",
              "CODDLED",
              "FERMENTED",
              "FRIED",
              "GRILLED",
              "KNEADED",
              "MARINATED",
              "PAN_FRIED",
              "PICKLED",
              "PRESSURE_COOKED",
              "ROASTED",
              "SAUTEED",
              "SEARED",
              "SIMMERED",
              "SMOKED",
              "STEAMED",
              "STEEPED",
              "STIR_FRIED",
              "OTHER_METHOD"
            ]
          }
        },
        "portionSize": {
          "description": "Optional. Size of the order, represented in units of items. (e.g. 4 \"skewers\", 6 \"pieces\")",
          "$ref": "PortionSize"
        },
        "mediaKeys": {
          "description": "Optional. The media keys of the media associated with the dish. Only photo media is supported. When there are multiple photos associated, the first photo is considered as the preferred photo.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Money": {
      "id": "Money",
      "description": "Represents an amount of money with its currency type.",
      "type": "object",
      "properties": {
        "currencyCode": {
          "description": "The three-letter currency code defined in ISO 4217.",
          "type": "string"
        },
        "units": {
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
          "type": "string",
          "format": "int64"
        },
        "nanos": {
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "NutritionFacts": {
      "id": "NutritionFacts",
      "description": "This message represents nutrition facts for a food dish.",
      "type": "object",
      "properties": {
        "calories": {
          "description": "Optional. Calories of the dish.",
          "$ref": "CaloriesFact"
        },
        "totalFat": {
          "description": "Optional. Fat information for a given food dish.",
          "$ref": "NutritionFact"
        },
        "cholesterol": {
          "description": "Optional. Cholesterol information for a given food dish.",
          "$ref": "NutritionFact"
        },
        "sodium": {
          "description": "Optional. Sodium information for a given food dish.",
          "$ref": "NutritionFact"
        },
        "totalCarbohydrate": {
          "description": "Optional. Carbohydrate information for a given food dish.",
          "$ref": "NutritionFact"
        },
        "protein": {
          "description": "Optional. Protein information for a given food dish.",
          "$ref": "NutritionFact"
        }
      }
    },
    "CaloriesFact": {
      "id": "CaloriesFact",
      "description": "This message denotes calories information with an upper bound and lower bound range. Lower amount must be specified. Both lower and upper amounts are non-negative numbers.",
      "type": "object",
      "properties": {
        "lowerAmount": {
          "description": "Required. Lower amount of calories",
          "type": "integer",
          "format": "int32"
        },
        "upperAmount": {
          "description": "Optional. Upper amount of calories",
          "type": "integer",
          "format": "int32"
        },
        "unit": {
          "description": "Required. Unit of the given calories information.",
          "type": "string",
          "enumDescriptions": [
            "Energy unit unspecified",
            "Calorie",
            "Joule"
          ],
          "enum": [
            "ENERGY_UNIT_UNSPECIFIED",
            "CALORIE",
            "JOULE"
          ]
        }
      }
    },
    "NutritionFact": {
      "id": "NutritionFact",
      "description": "This message denotes nutrition information with an upper bound and lower bound range and can be represented by mass unit. Lower amount must be specified. Both lower and upper amounts are non-negative numbers.",
      "type": "object",
      "properties": {
        "lowerAmount": {
          "description": "Required. Lower amount of nutrition",
          "type": "number",
          "format": "double"
        },
        "upperAmount": {
          "description": "Optional. Upper amount of nutrition",
          "type": "number",
          "format": "double"
        },
        "unit": {
          "description": "Required. Unit of the given nutrition information.",
          "type": "string",
          "enumDescriptions": [
            "Mass unit unspecified",
            "Gram",
            "Milligram"
          ],
          "enum": [
            "MASS_UNIT_UNSPECIFIED",
            "GRAM",
            "MILLIGRAM"
          ]
        }
      }
    },
    "Ingredient": {
      "id": "Ingredient",
      "description": "This message denotes an ingredient information of a food dish.",
      "type": "object",
      "properties": {
        "labels": {
          "description": "Required. Labels to describe ingredient. Display names should be 140 characters or less, with descriptions 1,000 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "MenuLabel"
          }
        }
      }
    },
    "PortionSize": {
      "id": "PortionSize",
      "description": "Serving portion size of a food dish.",
      "type": "object",
      "properties": {
        "quantity": {
          "description": "Required. Number of the portion.",
          "type": "integer",
          "format": "int32"
        },
        "unit": {
          "description": "Required. The repeated name_info field is for the unit in multiple languages.",
          "type": "array",
          "items": {
            "$ref": "MenuLabel"
          }
        }
      }
    },
    "FoodMenuItemOption": {
      "id": "FoodMenuItemOption",
      "description": "Option of an Item. It requires an explicit user selection.",
      "type": "object",
      "properties": {
        "labels": {
          "description": "Required. Language tagged labels for this menu item option. E.g.: \"beef pad thai\", \"veggie pad thai\", \"small pizza\", \"large pizza\". Display names should be 140 characters or less, with descriptions 1,000 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "MenuLabel"
          }
        },
        "attributes": {
          "description": "Required. Detailed attributes of the item option. Individual unspecified attributes will be inherited from the item-level attibutes as the base.",
          "$ref": "FoodMenuItemAttributes"
        }
      }
    },
    "SearchGoogleLocationsRequest": {
      "id": "SearchGoogleLocationsRequest",
      "description": "Request message for GoogleLocations.SearchGoogleLocations.",
      "type": "object",
      "properties": {
        "location": {
          "description": "Location to search for. If provided, will find locations which match the provided location details.",
          "$ref": "Location"
        },
        "query": {
          "description": "Text query to search for. The search results from a query string will be less accurate than if providing an exact location, but can provide more inexact matches.",
          "type": "string"
        },
        "resultCount": {
          "description": "The number of matches to return. The default value is 3, with a maximum of 10. Note that latency may increase if more are requested. There is no pagination.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "Location": {
      "id": "Location",
      "description": "A location. See the [help center article] (https:\/\/support.google.com\/business\/answer\/3038177) for a detailed description of these fields, or the [category endpoint](\/my-business\/reference\/rest\/v4\/categories) for a list of valid business categories.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}` In the context of matches, this field will not be populated.",
          "type": "string"
        },
        "languageCode": {
          "description": "The language of the location. Set during creation and not updateable.",
          "type": "string"
        },
        "storeCode": {
          "description": "External identifier for this location, which must be unique inside a given account. This is a means of associating the location with your own records.",
          "type": "string"
        },
        "locationName": {
          "description": "Location name should reflect your business's real-world name, as used consistently on your storefront, website, and stationery, and as known to customers. Any additional information, when relevant, can be included in other fields of the resource (for example, `Address`, `Categories`). Don't add unnecessary information to your name (for example, prefer \"Google\" over \"Google Inc. - Mountain View Corporate Headquarters\"). Don't include marketing taglines, store codes, special characters, hours or closed\/open status, phone numbers, website URLs, service\/product information, location\/address or directions, or containment information (for example, \"Chase ATM in Duane Reade\").",
          "type": "string"
        },
        "primaryPhone": {
          "description": "A phone number that connects to your individual business location as directly as possible. Use a local phone number instead of a central, call center helpline number whenever possible.",
          "type": "string"
        },
        "additionalPhones": {
          "description": "Up to two phone numbers (mobile or landline, no fax) at which your business can be called, in addition to your primary phone number.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "address": {
          "description": "A precise, accurate address to describe your business location. PO boxes or mailboxes located at remote locations are not acceptable. At this time, you can specify a maximum of five `address_lines` values in the address.",
          "$ref": "PostalAddress"
        },
        "primaryCategory": {
          "description": "Category that best describes the core business this location engages in.",
          "$ref": "Category"
        },
        "additionalCategories": {
          "description": "Additional categories to describe your business. Categories help your customers find accurate, specific results for services they're interested in. To keep your business information accurate and live, make sure that you use as few categories as possible to describe your overall core business. Choose categories that are as specific as possible, but representative of your main business.",
          "type": "array",
          "items": {
            "$ref": "Category"
          }
        },
        "websiteUrl": {
          "description": "A URL for this business. If possible, use a URL that represents this individual business location instead of a generic website\/URL that represents all locations, or the brand.",
          "type": "string"
        },
        "regularHours": {
          "description": "Operating hours for the business.",
          "$ref": "BusinessHours"
        },
        "specialHours": {
          "description": "Special hours for the business. This typically includes holiday hours, and other times outside of regular operating hours. These override regular business hours.",
          "$ref": "SpecialHours"
        },
        "serviceArea": {
          "description": "Service area businesses provide their service at the customer's location. If this business is a service area business, this field describes the area(s) serviced by the business.",
          "$ref": "ServiceAreaBusiness"
        },
        "locationKey": {
          "description": "A collection of keys that link this business to other Google properties, such as a Google+ page and Google Maps Places.",
          "$ref": "LocationKey"
        },
        "labels": {
          "description": "A collection of free-form strings to allow you to tag your business. These labels are NOT user facing; only you can see them. Limited to 255 characters (per label).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "adWordsLocationExtensions": {
          "description": "Additional information that is surfaced in AdWords.",
          "$ref": "AdWordsLocationExtensions"
        },
        "latlng": {
          "description": "User-provided latitude and longitude. When creating a location, this field is ignored if the provided address geocodes successfully. This field is only returned on get requests if the user-provided `latlng` value was accepted during create, or the `latlng` value was updated through the Business Profile website. This field cannot be updated.",
          "$ref": "LatLng"
        },
        "openInfo": {
          "description": "A flag that indicates whether the location is currently open for business.",
          "$ref": "OpenInfo"
        },
        "locationState": {
          "description": "Output only. A set of booleans that reflects the [state of a location.](https:\/\/support.google.com\/business\/answer\/3480862)",
          "$ref": "LocationState"
        },
        "attributes": {
          "description": "Attributes for this location.",
          "type": "array",
          "items": {
            "$ref": "Attribute"
          }
        },
        "metadata": {
          "description": "Output Only. Additional non-user-editable information.",
          "$ref": "Metadata"
        },
        "priceLists": {
          "description": "Price list information for this location.",
          "type": "array",
          "items": {
            "$ref": "PriceList"
          }
        },
        "profile": {
          "description": "Describes your business in your own voice and shares with users the unique story of your business and offerings.",
          "$ref": "Profile"
        },
        "relationshipData": {
          "description": "All locations and chain related to this one.",
          "$ref": "RelationshipData"
        },
        "moreHours": {
          "description": "More hours for a business's different departments or specific customers.",
          "type": "array",
          "items": {
            "$ref": "MoreHours"
          }
        }
      }
    },
    "BusinessHours": {
      "id": "BusinessHours",
      "description": "Represents the time periods that this location is open for business. Holds a collection of TimePeriod instances.",
      "type": "object",
      "properties": {
        "periods": {
          "description": "A collection of times that this location is open for business. Each period represents a range of hours when the location is open during the week.",
          "type": "array",
          "items": {
            "$ref": "TimePeriod"
          }
        }
      }
    },
    "TimePeriod": {
      "id": "TimePeriod",
      "description": "Represents a span of time that the business is open, starting on the specified open day\/time and closing on the specified close day\/time. The closing time must occur after the opening time, for example later in the same day, or on a subsequent day.",
      "type": "object",
      "properties": {
        "openDay": {
          "description": "Indicates the day of the week this period starts on.",
          "type": "string",
          "enumDescriptions": [
            "The day of the week is unspecified.",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ],
          "enum": [
            "DAY_OF_WEEK_UNSPECIFIED",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ]
        },
        "openTime": {
          "description": "Time in 24hr ISO 8601 extended format (hh:mm). Valid values are 00:00-24:00, where 24:00 represents midnight at the end of the specified day field.",
          "type": "string"
        },
        "closeDay": {
          "description": "Indicates the day of the week this period ends on.",
          "type": "string",
          "enumDescriptions": [
            "The day of the week is unspecified.",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ],
          "enum": [
            "DAY_OF_WEEK_UNSPECIFIED",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ]
        },
        "closeTime": {
          "description": "Time in 24hr ISO 8601 extended format (hh:mm). Valid values are 00:00-24:00, where 24:00 represents midnight at the end of the specified day field.",
          "type": "string"
        }
      }
    },
    "SpecialHours": {
      "id": "SpecialHours",
      "description": "Represents a set of time periods when a location's operational hours differ from its normal business hours.",
      "type": "object",
      "properties": {
        "specialHourPeriods": {
          "description": "A list of exceptions to the business's regular hours.",
          "type": "array",
          "items": {
            "$ref": "SpecialHourPeriod"
          }
        }
      }
    },
    "SpecialHourPeriod": {
      "id": "SpecialHourPeriod",
      "description": "Represents a single time period when a location's operational hours differ from its normal business hours. A special hour period must represent a range of less than 24 hours. The `open_time` and `start_date` must predate the `close_time` and `end_date`. The `close_time` and `end_date` can extend to 11:59 a.m. on the day after the specified `start_date`. For example, the following inputs are valid: start_date=2015-11-23, open_time=08:00, close_time=18:00 start_date=2015-11-23, end_date=2015-11-23, open_time=08:00, close_time=18:00 start_date=2015-11-23, end_date=2015-11-24, open_time=13:00, close_time=11:59 The following inputs are not valid: start_date=2015-11-23, open_time=13:00, close_time=11:59 start_date=2015-11-23, end_date=2015-11-24, open_time=13:00, close_time=12:00 start_date=2015-11-23, end_date=2015-11-25, open_time=08:00, close_time=18:00",
      "type": "object",
      "properties": {
        "startDate": {
          "description": "The calendar date this special hour period starts on.",
          "$ref": "Date"
        },
        "openTime": {
          "description": "The wall time on `start_date` when a location opens, expressed in 24hr ISO 8601 extended format. (hh:mm) Valid values are 00:00-24:00, where 24:00 represents midnight at the end of the specified day field. Must be specified if `is_closed` is false.",
          "type": "string"
        },
        "endDate": {
          "description": "The calendar date this special hour period ends on. If `end_date` field is not set, default to the date specified in `start_date`. If set, this field must be equal to or at most 1 day after `start_date`.",
          "$ref": "Date"
        },
        "closeTime": {
          "description": "The wall time on `end_date` when a location closes, expressed in 24hr ISO 8601 extended format. (hh:mm) Valid values are 00:00-24:00, where 24:00 represents midnight at the end of the specified day field. Must be specified if `is_closed` is false.",
          "type": "string"
        },
        "isClosed": {
          "description": "If true, `end_date`, `open_time`, and `close_time` are ignored, and the date specified in `start_date` is treated as the location being closed for the entire day.",
          "type": "boolean"
        }
      }
    },
    "Date": {
      "id": "Date",
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
      "type": "object",
      "properties": {
        "year": {
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
          "type": "integer",
          "format": "int32"
        },
        "month": {
          "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
          "type": "integer",
          "format": "int32"
        },
        "day": {
          "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "ServiceAreaBusiness": {
      "id": "ServiceAreaBusiness",
      "description": "Service area businesses provide their service at the customer's location (for example, a locksmith or plumber).",
      "type": "object",
      "properties": {
        "businessType": {
          "description": "Indicates the type of the service area business.",
          "type": "string",
          "enumDescriptions": [
            "Output only. Not specified.",
            "Offers service only in the surrounding area (not at the business address).",
            "Offers service at the business address and the surrounding area."
          ],
          "enum": [
            "BUSINESS_TYPE_UNSPECIFIED",
            "CUSTOMER_LOCATION_ONLY",
            "CUSTOMER_AND_BUSINESS_LOCATION"
          ]
        },
        "radius": {
          "description": "Output only. The area that this business serves centered around a point.",
          "$ref": "PointRadius"
        },
        "places": {
          "description": "The area that this business serves defined through a set of places.",
          "$ref": "Places"
        }
      }
    },
    "PointRadius": {
      "id": "PointRadius",
      "description": "A radius around a particular point (latitude\/longitude).",
      "type": "object",
      "properties": {
        "latlng": {
          "description": "The latitude\/longitude that specifies the center of an area defined by the radius.",
          "$ref": "LatLng"
        },
        "radiusKm": {
          "description": "The distance in kilometers of the area around the point.",
          "type": "number",
          "format": "float"
        }
      }
    },
    "LatLng": {
      "id": "LatLng",
      "description": "An object that represents a latitude\/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges.",
      "type": "object",
      "properties": {
        "latitude": {
          "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
          "type": "number",
          "format": "double"
        },
        "longitude": {
          "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
          "type": "number",
          "format": "double"
        }
      }
    },
    "Places": {
      "id": "Places",
      "description": "Defines the union of areas represented by a set of places.",
      "type": "object",
      "properties": {
        "placeInfos": {
          "description": "The areas represented by place IDs. Limited to a maximum of 20 places.",
          "type": "array",
          "items": {
            "$ref": "PlaceInfo"
          }
        }
      }
    },
    "PlaceInfo": {
      "id": "PlaceInfo",
      "description": "Defines an area that's represented by a place ID.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The localized name of the place. For example, `Scottsdale, AZ`.",
          "type": "string"
        },
        "placeId": {
          "description": "The ID of the place. Must correspond to a [region.] (https:\/\/developers.google.com\/places\/web-service\/supported_types#table3)",
          "type": "string"
        }
      }
    },
    "LocationKey": {
      "id": "LocationKey",
      "description": "Alternate\/surrogate key references for a location.",
      "type": "object",
      "properties": {
        "plusPageId": {
          "description": "Output only. If this location has a Google+ page associated with it, this is populated with the Google+ page ID for this location.",
          "type": "string"
        },
        "placeId": {
          "description": "If this location has been verified and is connected to\/appears on Google Maps, this field is populated with the place ID for the location. This ID can be used in various Places APIs. If this location is unverified, this field may be populated if the location has been associated with a place that appears on Google Maps. This field can be set during Create calls, but not for Update. The additional `explicit_no_place_id` bool qualifies whether an unset place ID is deliberate or not.",
          "type": "string"
        },
        "explicitNoPlaceId": {
          "description": "Output only. A value of true indicates that an unset place ID is deliberate, which is different from no association being made yet.",
          "type": "boolean"
        },
        "requestId": {
          "description": "Output only. The `request_id` used to create this location. May be empty if this location was created outside of the Google My Business API or Business Profile Locations.",
          "type": "string"
        }
      }
    },
    "AdWordsLocationExtensions": {
      "id": "AdWordsLocationExtensions",
      "description": "Additional information that is surfaced in AdWords.",
      "type": "object",
      "properties": {
        "adPhone": {
          "description": "An alternate phone number to display on AdWords location extensions instead of the location's primary phone number.",
          "type": "string"
        }
      }
    },
    "OpenInfo": {
      "id": "OpenInfo",
      "description": "Information related to the opening state of the business.",
      "type": "object",
      "properties": {
        "status": {
          "description": "Indicates whether or not the Location is currently open for business. All locations are open by default, unless updated to be closed.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Indicates that the location is open.",
            "Indicates that the location has been permanently closed.",
            "Indicates that the location has been temporarily closed. This value may only be applied to published locations (i.e. location_state.is_published = true). When updating the status field to this value, clients are required to set the `update_mask` explicitly to `open_info.status`. No other update masks can be set during this update call. This is a temporary restriction which will be relaxed soon."
          ],
          "enum": [
            "OPEN_FOR_BUSINESS_UNSPECIFIED",
            "OPEN",
            "CLOSED_PERMANENTLY",
            "CLOSED_TEMPORARILY"
          ]
        },
        "canReopen": {
          "description": "Output only. Indicates whether this business is eligible for re-open.",
          "type": "boolean"
        },
        "openingDate": {
          "description": "The date on which the location first opened. If the exact day is not known, month and year only can be provided. The date must be in the past or be no more than one year in the future.",
          "$ref": "Date"
        }
      }
    },
    "LocationState": {
      "id": "LocationState",
      "description": "Contains a set of booleans that reflect the [state of a Location.](https:\/\/support.google.com\/business\/answer\/3480862)",
      "type": "object",
      "properties": {
        "isGoogleUpdated": {
          "description": "Output only. Indicates whether the place ID associated with this location has updates.",
          "type": "boolean"
        },
        "isDuplicate": {
          "description": "Output only. Indicates whether the location is a duplicate of another location.",
          "type": "boolean"
        },
        "isSuspended": {
          "description": "Output only. Indicates whether the location is suspended. Suspended locations are not visible to end users in Google products. If you believe this was a mistake, see the [help center article] (https:\/\/support.google.com\/business\/answer\/4569145).",
          "type": "boolean"
        },
        "canUpdate": {
          "description": "Output only. Indicates whether the location can be updated.",
          "type": "boolean"
        },
        "canDelete": {
          "description": "Output only. Indicates whether the location can be deleted using the Google My Business API.",
          "type": "boolean"
        },
        "isVerified": {
          "description": "Output only. Indicates whether the location is verified.",
          "type": "boolean"
        },
        "needsReverification": {
          "description": "Output only. Indicates whether the location requires reverification.",
          "type": "boolean"
        },
        "isPendingReview": {
          "description": "Output only. Indicates whether the review of the location is pending.",
          "type": "boolean"
        },
        "isDisabled": {
          "description": "Output only. Indicates whether the location is disabled.",
          "type": "boolean"
        },
        "isPublished": {
          "description": "Output only. Indicates whether the location is published.",
          "type": "boolean"
        },
        "isDisconnected": {
          "description": "Output only. Indicates whether the location is disconnected from a place on Google Maps.",
          "type": "boolean"
        },
        "isLocalPostApiDisabled": {
          "description": "Output only. Indicates whether [accounts.locations.localPosts](\/my-business\/reference\/rest\/v4\/accounts.locations.localPosts) is disabled for this location.",
          "type": "boolean"
        },
        "canModifyServiceList": {
          "description": "Output only. Indicates if the listing can modify a ServiceList.",
          "readOnly": true,
          "type": "boolean"
        },
        "canHaveFoodMenus": {
          "description": "Output only. Indicates if the listing is eligible for food menu.",
          "readOnly": true,
          "type": "boolean"
        },
        "hasPendingEdits": {
          "description": "Output only. Indicates whether any of this Location's properties are in the edit pending state.",
          "type": "boolean"
        },
        "hasPendingVerification": {
          "description": "Output only. Indicates whether the location has pending verification requests.",
          "type": "boolean"
        },
        "canOperateHealthData": {
          "description": "Output only. Indicates whether the location can operate on Health data.",
          "readOnly": true,
          "type": "boolean"
        },
        "canOperateLodgingData": {
          "description": "Output only. Indicates whether the location can operate on Lodging data.",
          "readOnly": true,
          "type": "boolean"
        }
      }
    },
    "Attribute": {
      "id": "Attribute",
      "description": "A location attribute. Attributes provide additional information about a location. The attributes that can be set on a location may vary based on the properties of that location (for example, category). Available attributes are determined by Google and may be added and removed without API changes.",
      "type": "object",
      "properties": {
        "attributeId": {
          "description": "The ID of the attribute. Attribute IDs are provided by Google.",
          "type": "string"
        },
        "valueType": {
          "description": "Output only. The type of value that this attribute contains. This should be used to determine how to interpret the value.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The values for this attribute are boolean values.",
            "The attribute has a predetermined list of available values that can be used. Metadata for this attribute will list these values.",
            "The values for this attribute are URLs.",
            "The attribute value is an enum with multiple possible values that can be explicitly set or unset."
          ],
          "enum": [
            "ATTRIBUTE_VALUE_TYPE_UNSPECIFIED",
            "BOOL",
            "ENUM",
            "URL",
            "REPEATED_ENUM"
          ]
        },
        "values": {
          "description": "The values for this attribute. The type of the values supplied must match that expected for that attribute; see [AttributeValueType](\/my-business\/reference\/rest\/v4\/AttributeValueType). This is a repeated field where multiple attribute values may be provided. Attribute types only support one value.",
          "type": "array",
          "items": {
            "type": "any"
          }
        },
        "repeatedEnumValue": {
          "description": "When the attribute value type is REPEATED_ENUM, this contains the attribute value, and the other values fields must be empty.",
          "$ref": "RepeatedEnumAttributeValue"
        },
        "urlValues": {
          "description": "When the attribute value type is URL, this field contains the value(s) for this attribute, and the other values fields must be empty.",
          "type": "array",
          "items": {
            "$ref": "UrlAttributeValue"
          }
        }
      }
    },
    "RepeatedEnumAttributeValue": {
      "id": "RepeatedEnumAttributeValue",
      "description": "Values for an attribute with a `value_type` of REPEATED_ENUM. This consists of two lists of value IDs: those that are set (true) and those that are unset (false). Values absent are considered unknown. At least one value must be specified.",
      "type": "object",
      "properties": {
        "setValues": {
          "description": "Enum values that are set.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "unsetValues": {
          "description": "Enum values that are unset.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "UrlAttributeValue": {
      "id": "UrlAttributeValue",
      "description": "Values for an attribute with a `value_type` of URL.",
      "type": "object",
      "properties": {
        "url": {
          "description": "The URL.",
          "type": "string"
        }
      }
    },
    "Metadata": {
      "id": "Metadata",
      "description": "Additional non-user-editable information about the location.",
      "type": "object",
      "properties": {
        "duplicate": {
          "description": "Information about the location that this location duplicates. Only present when `location_state.is_duplicate` is true. Deprecated: We are no longer supporting detailed information for duplicates.",
          "$ref": "Duplicate"
        },
        "mapsUrl": {
          "description": "A link to the location on Maps.",
          "type": "string"
        },
        "newReviewUrl": {
          "description": "A link to the page on Google Search where a customer can leave a review for the location.",
          "type": "string"
        }
      }
    },
    "Duplicate": {
      "id": "Duplicate",
      "description": "Information about the location that this location duplicates.",
      "type": "object",
      "properties": {
        "locationName": {
          "description": "The resource name of the location that this duplicates. Only populated if the authenticated user has access rights to that location and that location is not deleted.",
          "type": "string"
        },
        "placeId": {
          "description": "The place ID of the location that this duplicates.",
          "type": "string"
        },
        "access": {
          "description": "Indicates whether the user has access to the location it duplicates.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Unable to determine whether the user has access to the location that it duplicates.",
            "User has access to the location that it duplicates.",
            "User doesn't have access to the location that it duplicates."
          ],
          "enum": [
            "ACCESS_UNSPECIFIED",
            "ACCESS_UNKNOWN",
            "ALLOWED",
            "INSUFFICIENT"
          ]
        }
      }
    },
    "PriceList": {
      "id": "PriceList",
      "description": "A list of item price information. Price lists are structured as one or more price lists, each containing one or more sections with one or more items. For example, food price lists may represent breakfast\/lunch\/dinner menus, with sections for burgers\/steak\/seafood.",
      "type": "object",
      "properties": {
        "priceListId": {
          "description": "Required. ID for the price list. Price list, section, and item IDs cannot be duplicated within this Location.",
          "type": "string"
        },
        "labels": {
          "description": "Required. Language-tagged labels for the price list.",
          "type": "array",
          "items": {
            "$ref": "Label"
          }
        },
        "sourceUrl": {
          "description": "Optional source URL of where the price list was retrieved from. For example, this could be the URL of the page that was automatically scraped to populate the menu information.",
          "type": "string"
        },
        "sections": {
          "description": "Required. Sections for this price list. Each price list must contain at least one section.",
          "type": "array",
          "items": {
            "$ref": "Section"
          }
        }
      }
    },
    "Label": {
      "id": "Label",
      "description": "Label to be used when displaying the price list, section, or item.",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "Required. Display name for the price list, section, or item.",
          "type": "string"
        },
        "description": {
          "description": "Optional. Description of the price list, section, or item.",
          "type": "string"
        },
        "languageCode": {
          "description": "Optional. The BCP-47 language code that these strings apply for. Only one set of labels may be set per language.",
          "type": "string"
        }
      }
    },
    "Section": {
      "id": "Section",
      "description": "A section of the price list containing one or more items.",
      "type": "object",
      "properties": {
        "sectionId": {
          "description": "Required. ID for the section. Price list, section, and item IDs cannot be duplicated within this Location.",
          "type": "string"
        },
        "labels": {
          "description": "Required. Language-tagged labels for the section. We recommend that section names and descriptions be 140 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "Label"
          }
        },
        "sectionType": {
          "description": "Optional. Type of the current price list section. Default value is FOOD.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Section contains items that represent food.",
            "Section contains items that represent services."
          ],
          "enum": [
            "SECTION_TYPE_UNSPECIFIED",
            "FOOD",
            "SERVICES"
          ]
        },
        "items": {
          "description": "Items that are contained within this section of the price list.",
          "type": "array",
          "items": {
            "$ref": "Item"
          }
        }
      }
    },
    "Item": {
      "id": "Item",
      "description": "A single list item. Each variation of an item in the price list should have its own Item with its own price data.",
      "type": "object",
      "properties": {
        "itemId": {
          "description": "Required. ID for the item. Price list, section, and item IDs cannot be duplicated within this Location.",
          "type": "string"
        },
        "labels": {
          "description": "Required. Language-tagged labels for the item. We recommend that item names be 140 characters or less, and descriptions 250 characters or less. At least one set of labels is required.",
          "type": "array",
          "items": {
            "$ref": "Label"
          }
        },
        "price": {
          "description": "Optional. Price of the item.",
          "$ref": "Money"
        }
      }
    },
    "Profile": {
      "id": "Profile",
      "description": "All information pertaining to the location's profile.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Description of the location in your own voice, not editable by anyone else.",
          "type": "string"
        }
      }
    },
    "RelationshipData": {
      "id": "RelationshipData",
      "description": "Information of all parent and children locations related to this one.",
      "type": "object",
      "properties": {
        "parentChain": {
          "description": "The resource name of the Chain that this location is member of. How to find Chain ID",
          "type": "string"
        }
      }
    },
    "MoreHours": {
      "id": "MoreHours",
      "description": "The time periods during which a location is open for certain types of business.",
      "type": "object",
      "properties": {
        "hoursTypeId": {
          "description": "Required. Type of hours. Clients should call {#link businessCategories:BatchGet} to get supported hours types for categories of their locations.",
          "type": "string"
        },
        "periods": {
          "description": "Required. A collection of times that this location is open. Each period represents a range of hours when the location is open during the week.",
          "type": "array",
          "items": {
            "$ref": "TimePeriod"
          }
        }
      }
    },
    "SearchGoogleLocationsResponse": {
      "id": "SearchGoogleLocationsResponse",
      "description": "Response message for GoogleLocations.SearchGoogleLocations.",
      "type": "object",
      "properties": {
        "googleLocations": {
          "description": "A collection of GoogleLocations that are potential matches to the specified request, listed in order from most to least accuracy.",
          "type": "array",
          "items": {
            "$ref": "GoogleLocation"
          }
        }
      }
    },
    "GoogleLocation": {
      "id": "GoogleLocation",
      "description": "Represents a Location that is present on Google. This can be a location that has been claimed by the user, someone else, or could be unclaimed.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Resource name of this GoogleLocation, in the format `googleLocations\/{googleLocationId}`.",
          "type": "string"
        },
        "location": {
          "description": "The sparsely populated Location information. This field can be re-used in CreateLocation if it is not currently claimed by a user.",
          "$ref": "Location"
        },
        "requestAdminRightsUrl": {
          "description": "A URL that will redirect the user to the request admin rights UI. This field is only present if the location has already been claimed by any user, including the current user.",
          "type": "string"
        }
      }
    },
    "ListRecommendedGoogleLocationsResponse": {
      "id": "ListRecommendedGoogleLocationsResponse",
      "description": "Response message for GoogleLocations.ListRecommendedGoogleLocations. It also contains some locations that have been claimed by other Business Profile users since the last time they were recommended to this Business Profile account.",
      "type": "object",
      "properties": {
        "googleLocations": {
          "description": "The locations recommended to a Business Profile account. Each of these represents a GoogleLocation that is present on Maps. The locations are sorted in decreasing order of relevance to the Business Profile account.",
          "type": "array",
          "items": {
            "$ref": "GoogleLocation"
          }
        },
        "totalSize": {
          "description": "The total number of recommended locations for this Business Profile account, irrespective of pagination.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "During pagination, if there are more locations available to be fetched in the next page, this field is populated with a token to fetch the next page of locations in a subsequent call. If there are no more locations to be fetched, this field is not present in the response.",
          "type": "string"
        }
      }
    },
    "ReportGoogleLocationRequest": {
      "id": "ReportGoogleLocationRequest",
      "description": "Request message for reporting a GoogleLocation.",
      "type": "object",
      "properties": {
        "locationGroupName": {
          "description": "Optional. The resource name of the location group that this Google Location is being reported for, in the format `accounts\/{account_id}`.",
          "type": "string"
        },
        "reportReasonBadLocation": {
          "description": "The reason for which the user is reporting this location when the issue is with the location itself.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The recommended location is not an actual location.",
            "The recommended location is permanently closed.",
            "The recommended location does not exist.",
            "The recommended location is spam, fake or offensive.",
            "The recommended location is a private place or home.",
            "The recommended location has moved to a new location. Should be accompanied by a `report_reason_elaboration` specifying the new address.",
            "The recommended location is a duplicate of another location."
          ],
          "enum": [
            "BAD_LOCATION_REASON_UNSPECIFIED",
            "NOT_A_LOCATION",
            "PERMANENTLY_CLOSED",
            "DOES_NOT_EXIST",
            "SPAM",
            "NOT_A_BUSINESS",
            "MOVED",
            "DUPLICATE"
          ]
        },
        "reportReasonBadRecommendation": {
          "description": "The reason for which the user is reporting this location when the issue is with the recommendation. This report is useful if the location has been recommended to the Business Profile account.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The recommended location is not a store front.",
            "The recommended location doesn't belong to the chain suggested in the `chain_display_name` in the returned location. Should be accompanied by a `report_reason_elaboration` specifying the name of the correct chain.",
            "The recommended location is not relevant to the user. Should be accompanied by a `report_reason_elaboration` for why the recommendation is irrelevant."
          ],
          "enum": [
            "BAD_RECOMMENDATION_REASON_UNSPECIFIED",
            "NOT_A_STORE_FRONT",
            "NOT_PART_OF_SUGGESTED_CHAIN",
            "IRRELEVANT"
          ]
        },
        "reportReasonElaboration": {
          "description": "Optional. A text entry for elaborating on the reason for which the user is reporting this location. The maximum length is 512 characters.",
          "type": "string"
        },
        "reportReasonLanguageCode": {
          "description": "Optional. The BCP 47 code of language used in `report_reason_elaboration`.",
          "type": "string"
        }
      }
    },
    "HealthProviderAttributes": {
      "id": "HealthProviderAttributes",
      "description": "The Health provider attributes linked with this location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/healthProviderAttributes`",
          "type": "string"
        },
        "insuranceNetworks": {
          "description": "Optional. A list of insurance networks accpected by this location.",
          "type": "array",
          "items": {
            "$ref": "InsuranceNetwork"
          }
        }
      }
    },
    "InsuranceNetwork": {
      "id": "InsuranceNetwork",
      "description": "A single insurance network. Next id: 5",
      "type": "object",
      "properties": {
        "networkId": {
          "description": "Required. The id of this insurance network generated by Google.",
          "type": "string"
        },
        "networkNames": {
          "description": "Output only. A map of network display names in requested languages where the language is the key and localized display name is the value. The display name in English is set by default.",
          "readOnly": true,
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "payerNames": {
          "description": "Output only. A map of payer display names in requested languages where the language is the key and localized display name is the value. The display name in English is set by default.",
          "readOnly": true,
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "state": {
          "description": "Output only. The state of this insurance network.",
          "readOnly": true,
          "type": "string",
          "enumDescriptions": [
            "Default value.",
            "This network is accepted by this location.",
            "There is a pending request to add this network to the accepted list.",
            "There is a pending request to remove this network from the accepted list.",
            "This network is not accepted by this location."
          ],
          "enum": [
            "NETWORK_STATE_UNSPECIFIED",
            "ACCEPTED",
            "PENDING_ADD",
            "PENDING_DELETE",
            "NOT_ACCEPTED"
          ]
        }
      }
    },
    "ReportLocationInsightsRequest": {
      "id": "ReportLocationInsightsRequest",
      "description": "Request message for Insights.ReportLocationInsights.",
      "type": "object",
      "properties": {
        "locationNames": {
          "description": "A collection of locations to fetch insights for, specified by their names.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basicRequest": {
          "description": "A request to include basic metric insights in the report.",
          "$ref": "BasicMetricsRequest"
        },
        "drivingDirectionsRequest": {
          "description": "A request to include insights about driving-direction requests in the report.",
          "$ref": "DrivingDirectionMetricsRequest"
        }
      }
    },
    "BasicMetricsRequest": {
      "id": "BasicMetricsRequest",
      "description": "A request for basic metric insights.",
      "type": "object",
      "properties": {
        "metricRequests": {
          "description": "A collection of metrics to return values for including the options for how the data should be returned.",
          "type": "array",
          "items": {
            "$ref": "MetricRequest"
          }
        },
        "timeRange": {
          "description": "The range to gather metrics for. The maximum range is 18 months from the request date. In some cases, the data may still be missing for days close to the request date. Missing data will be specified in the `metricValues` in the response.",
          "$ref": "TimeRange"
        }
      }
    },
    "MetricRequest": {
      "id": "MetricRequest",
      "description": "A request to return values for one metric and the options for how those values should be returned.",
      "type": "object",
      "properties": {
        "metric": {
          "description": "The requested metric.",
          "type": "string",
          "enumDescriptions": [
            "No metric specified.",
            "Shorthand to request all available metrics. Which metrics are included in ALL varies, and depends on the resource for which insights are being requested.",
            "The number of times the resource was shown when searching for the location directly.",
            "The number of times the resource was shown as a result of a categorical search (for example, restaurant).",
            "The number of times a resource was shown as a result of a search for the chain it belongs to, or a brand it sells. For example, Starbucks, Adidas. This is a subset of QUERIES_INDIRECT.",
            "The number of times the resource was viewed on Google Maps.",
            "The number of times the resource was viewed on Google Search.",
            "The number of times the website was clicked.",
            "The number of times the phone number was clicked.",
            "The number of times driving directions were requested.",
            "The number of views on media items uploaded by the merchant.",
            "The number of views on media items uploaded by customers.",
            "The total number of media items that are currently live that have been uploaded by the merchant.",
            "The total number of media items that are currently live that have been uploaded by customers.",
            "The number of times the local post was viewed on Google Search.",
            "The number of times the call to action button was clicked on Google."
          ],
          "enum": [
            "METRIC_UNSPECIFIED",
            "ALL",
            "QUERIES_DIRECT",
            "QUERIES_INDIRECT",
            "QUERIES_CHAIN",
            "VIEWS_MAPS",
            "VIEWS_SEARCH",
            "ACTIONS_WEBSITE",
            "ACTIONS_PHONE",
            "ACTIONS_DRIVING_DIRECTIONS",
            "PHOTOS_VIEWS_MERCHANT",
            "PHOTOS_VIEWS_CUSTOMERS",
            "PHOTOS_COUNT_MERCHANT",
            "PHOTOS_COUNT_CUSTOMERS",
            "LOCAL_POST_VIEWS_SEARCH",
            "LOCAL_POST_ACTIONS_CALL_TO_ACTION"
          ]
        },
        "options": {
          "description": "How the values should appear when returned.",
          "type": "array",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "No metric option specified. Will default to AGGREGATED_TOTAL in a request.",
              "Return values aggregated over the entire time frame. This is the default value.",
              "Return daily timestamped values across time range.",
              "Values will be returned as a breakdown by day of the week. Only valid for ACTIONS_PHONE.",
              "Values will be returned as a breakdown by hour of the day. Only valid for ACTIONS_PHONE."
            ],
            "enum": [
              "METRIC_OPTION_UNSPECIFIED",
              "AGGREGATED_TOTAL",
              "AGGREGATED_DAILY",
              "BREAKDOWN_DAY_OF_WEEK",
              "BREAKDOWN_HOUR_OF_DAY"
            ]
          }
        }
      }
    },
    "TimeRange": {
      "id": "TimeRange",
      "description": "A range of time. Data will be pulled over the range as a half-open inverval (that is, [start_time, end_time)).",
      "type": "object",
      "properties": {
        "startTime": {
          "description": "Epoch timestamp for the start of the range (inclusive).",
          "type": "string",
          "format": "google-datetime"
        },
        "endTime": {
          "description": "Epoch timestamp for the end of the range (exclusive).",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "DrivingDirectionMetricsRequest": {
      "id": "DrivingDirectionMetricsRequest",
      "description": "A request for driving direction insights.",
      "type": "object",
      "properties": {
        "numDays": {
          "description": "The number of days to aggregate data for. Results returned will be available data over the last number of requested days. Valid values are 7, 30, and 90.",
          "type": "string",
          "enumDescriptions": [
            "7 days. This is the default value.",
            "30 days.",
            "90 days."
          ],
          "enum": [
            "SEVEN",
            "THIRTY",
            "NINETY"
          ]
        },
        "languageCode": {
          "description": "The BCP 47 code for the language. If a language code is not provided, it defaults to English.",
          "type": "string"
        }
      }
    },
    "ReportLocationInsightsResponse": {
      "id": "ReportLocationInsightsResponse",
      "description": "Response message for `Insights.ReportLocationInsights`.",
      "type": "object",
      "properties": {
        "locationMetrics": {
          "description": "A collection of metric values by location.",
          "type": "array",
          "items": {
            "$ref": "LocationMetrics"
          }
        },
        "locationDrivingDirectionMetrics": {
          "description": "A collection of values for driving direction-related metrics.",
          "type": "array",
          "items": {
            "$ref": "LocationDrivingDirectionMetrics"
          }
        }
      }
    },
    "LocationMetrics": {
      "id": "LocationMetrics",
      "description": "A series of Metrics and BreakdownMetrics associated with a Location over some time range.",
      "type": "object",
      "properties": {
        "locationName": {
          "description": "The location resource name these values belong to.",
          "type": "string"
        },
        "timeZone": {
          "description": "IANA timezone for the location.",
          "type": "string"
        },
        "metricValues": {
          "description": "A list of values for the requested metrics.",
          "type": "array",
          "items": {
            "$ref": "MetricValue"
          }
        }
      }
    },
    "MetricValue": {
      "id": "MetricValue",
      "description": "A value for a single Metric from a starting time.",
      "type": "object",
      "properties": {
        "metric": {
          "description": "The metric for which the value applies.",
          "type": "string",
          "enumDescriptions": [
            "No metric specified.",
            "Shorthand to request all available metrics. Which metrics are included in ALL varies, and depends on the resource for which insights are being requested.",
            "The number of times the resource was shown when searching for the location directly.",
            "The number of times the resource was shown as a result of a categorical search (for example, restaurant).",
            "The number of times a resource was shown as a result of a search for the chain it belongs to, or a brand it sells. For example, Starbucks, Adidas. This is a subset of QUERIES_INDIRECT.",
            "The number of times the resource was viewed on Google Maps.",
            "The number of times the resource was viewed on Google Search.",
            "The number of times the website was clicked.",
            "The number of times the phone number was clicked.",
            "The number of times driving directions were requested.",
            "The number of views on media items uploaded by the merchant.",
            "The number of views on media items uploaded by customers.",
            "The total number of media items that are currently live that have been uploaded by the merchant.",
            "The total number of media items that are currently live that have been uploaded by customers.",
            "The number of times the local post was viewed on Google Search.",
            "The number of times the call to action button was clicked on Google."
          ],
          "enum": [
            "METRIC_UNSPECIFIED",
            "ALL",
            "QUERIES_DIRECT",
            "QUERIES_INDIRECT",
            "QUERIES_CHAIN",
            "VIEWS_MAPS",
            "VIEWS_SEARCH",
            "ACTIONS_WEBSITE",
            "ACTIONS_PHONE",
            "ACTIONS_DRIVING_DIRECTIONS",
            "PHOTOS_VIEWS_MERCHANT",
            "PHOTOS_VIEWS_CUSTOMERS",
            "PHOTOS_COUNT_MERCHANT",
            "PHOTOS_COUNT_CUSTOMERS",
            "LOCAL_POST_VIEWS_SEARCH",
            "LOCAL_POST_ACTIONS_CALL_TO_ACTION"
          ]
        },
        "totalValue": {
          "description": "The total aggregated value for this metric. Set for the AGGREGATED_TOTAL option.",
          "$ref": "DimensionalMetricValue"
        },
        "dimensionalValues": {
          "description": "Dimensional values for this metric.",
          "type": "array",
          "items": {
            "$ref": "DimensionalMetricValue"
          }
        }
      }
    },
    "DimensionalMetricValue": {
      "id": "DimensionalMetricValue",
      "description": "A value for a single metric with a given time dimension.",
      "type": "object",
      "properties": {
        "metricOption": {
          "description": "The option that requested this dimensional value.",
          "type": "string",
          "enumDescriptions": [
            "No metric option specified. Will default to AGGREGATED_TOTAL in a request.",
            "Return values aggregated over the entire time frame. This is the default value.",
            "Return daily timestamped values across time range.",
            "Values will be returned as a breakdown by day of the week. Only valid for ACTIONS_PHONE.",
            "Values will be returned as a breakdown by hour of the day. Only valid for ACTIONS_PHONE."
          ],
          "enum": [
            "METRIC_OPTION_UNSPECIFIED",
            "AGGREGATED_TOTAL",
            "AGGREGATED_DAILY",
            "BREAKDOWN_DAY_OF_WEEK",
            "BREAKDOWN_HOUR_OF_DAY"
          ]
        },
        "timeDimension": {
          "description": "The dimension for the value.",
          "$ref": "TimeDimension"
        },
        "value": {
          "description": "The value. If no value is set, then the requested data is missing.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "TimeDimension": {
      "id": "TimeDimension",
      "description": "The dimension for which data is divided over.",
      "type": "object",
      "properties": {
        "dayOfWeek": {
          "description": "The day of the week (\"MONDAY\" to \"SUNDAY\") this value corresponds to. Set for BREAKDOWN_DAY_OF_WEEK option.",
          "type": "string",
          "enumDescriptions": [
            "The day of the week is unspecified.",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
          ],
          "enum": [
            "DAY_OF_WEEK_UNSPECIFIED",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ]
        },
        "timeOfDay": {
          "description": "The hour of the day (0 to 23) this value corresponds to. Set for BREAKDOWN_HOUR_OF_DAY option.",
          "$ref": "TimeOfDay"
        },
        "timeRange": {
          "description": "The range of time this value covers. Set for AGGREGATED_TOTAL and AGGREGATED_DAILY options.",
          "$ref": "TimeRange"
        }
      }
    },
    "TimeOfDay": {
      "id": "TimeOfDay",
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "type": "object",
      "properties": {
        "hours": {
          "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
          "type": "integer",
          "format": "int32"
        },
        "minutes": {
          "description": "Minutes of hour of day. Must be from 0 to 59.",
          "type": "integer",
          "format": "int32"
        },
        "seconds": {
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.",
          "type": "integer",
          "format": "int32"
        },
        "nanos": {
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "LocationDrivingDirectionMetrics": {
      "id": "LocationDrivingDirectionMetrics",
      "description": "A location indexed with the regions that people usually come from. This is captured by counting how many driving-direction requests to this location are from each region.",
      "type": "object",
      "properties": {
        "locationName": {
          "description": "The location resource name this metric value belongs to.",
          "type": "string"
        },
        "topDirectionSources": {
          "description": "Driving-direction requests by source region. By convention, these are sorted by count with at most 10 results.",
          "type": "array",
          "items": {
            "$ref": "TopDirectionSources"
          }
        },
        "timeZone": {
          "description": "Time zone (IANA timezone IDs, for example, 'Europe\/London') of the location.",
          "type": "string"
        }
      }
    },
    "TopDirectionSources": {
      "id": "TopDirectionSources",
      "description": "Top regions where driving-direction requests originated from.",
      "type": "object",
      "properties": {
        "dayCount": {
          "description": "The number of days data is aggregated over.",
          "type": "integer",
          "format": "int32"
        },
        "regionCounts": {
          "description": "Regions sorted in descending order by count.",
          "type": "array",
          "items": {
            "$ref": "RegionCount"
          }
        }
      }
    },
    "RegionCount": {
      "id": "RegionCount",
      "description": "A region with its associated request count.",
      "type": "object",
      "properties": {
        "latlng": {
          "description": "Center of region.",
          "$ref": "LatLng"
        },
        "label": {
          "description": "Human-readable label for the region.",
          "type": "string"
        },
        "count": {
          "description": "Number of driving-direction requests from this region.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "ReportLocalPostInsightsRequest": {
      "id": "ReportLocalPostInsightsRequest",
      "description": "Request message for Insights.ReportLocalPostInsights",
      "type": "object",
      "properties": {
        "localPostNames": {
          "description": "Required. The list of posts for which to fetch insights data. All posts have to belong to the location whose name is specified in the `name` field.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basicRequest": {
          "description": "A request to include basic metric insights in the report. This request applies to all posts requested.",
          "$ref": "BasicMetricsRequest"
        }
      }
    },
    "ReportLocalPostInsightsResponse": {
      "id": "ReportLocalPostInsightsResponse",
      "description": "Response message for Insights.ReportLocalPostInsights",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "localPostMetrics": {
          "description": "One entry per requested post corresponding to this location.",
          "type": "array",
          "items": {
            "$ref": "LocalPostMetrics"
          }
        },
        "timeZone": {
          "description": "Time zone (IANA timezone IDs, eg, 'Europe\/London') of the location.",
          "type": "string"
        }
      }
    },
    "LocalPostMetrics": {
      "id": "LocalPostMetrics",
      "description": "All the metrics requested for a Local Post.",
      "type": "object",
      "properties": {
        "localPostName": {
          "type": "string"
        },
        "metricValues": {
          "description": "A list of values for the requested metrics.",
          "type": "array",
          "items": {
            "$ref": "MetricValue"
          }
        }
      }
    },
    "ListInsuranceNetworksResponse": {
      "id": "ListInsuranceNetworksResponse",
      "description": "Response message for InsuranceNetworkService.ListInsuranceNetworks",
      "type": "object",
      "properties": {
        "networks": {
          "description": "A list of insurance networks that are supported by Google.",
          "type": "array",
          "items": {
            "$ref": "InsuranceNetwork"
          }
        },
        "nextPageToken": {
          "description": "If there are more insurance networks than the requested page size, then this field is populated with a token to fetch the next page of insurance networks on a subsequent call to ListInsuranceNetworks.",
          "type": "string"
        }
      }
    },
    "LocalPost": {
      "id": "LocalPost",
      "description": "Represents a [local post](https:\/\/support.google.com\/business\/answer\/7662907) for a location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. Google identifier for this local post in the form: `accounts\/{account_id}\/locations\/{location_id}\/localPosts\/{local_post_id}`",
          "type": "string"
        },
        "languageCode": {
          "description": "The language of the local post.",
          "type": "string"
        },
        "summary": {
          "description": "Description\/body of the local post.",
          "type": "string"
        },
        "callToAction": {
          "description": "The URL that users are sent to when clicking through the promotion. Ignored for topic type `OFFER`.",
          "$ref": "CallToAction"
        },
        "createTime": {
          "description": "Output only. Time of the creation of the post.",
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. Time of the last modification of the post made by the user.",
          "type": "string",
          "format": "google-datetime"
        },
        "event": {
          "description": "Event information. Required for topic types `EVENT` and `OFFER`.",
          "$ref": "LocalPostEvent"
        },
        "state": {
          "description": "Output only. The state of the post, indicating what part of its lifecycle it is in.",
          "type": "string",
          "enumDescriptions": [
            "State not specified.",
            "This post was rejected due to content policy violation.",
            "This post is published and is currently appearing in search results.",
            "This post is being processed and is not appearing in search results."
          ],
          "enum": [
            "LOCAL_POST_STATE_UNSPECIFIED",
            "REJECTED",
            "LIVE",
            "PROCESSING"
          ]
        },
        "media": {
          "description": "The media associated with the post. source_url is the only supported data field for a LocalPost MediaItem.",
          "type": "array",
          "items": {
            "$ref": "MediaItem"
          }
        },
        "searchUrl": {
          "description": "Output only. The link to the local post in Google search. This link can be used to share the post via social media, email, text, etc.",
          "type": "string"
        },
        "topicType": {
          "description": "Required. The topic type of the post: standard, event, offer, or alert.",
          "type": "string",
          "enumDescriptions": [
            "No post type is specified.",
            "Post contains basic information, like summary and images.",
            "Post contains basic information and an event.",
            "Post contains basic information, an event and offer related content (e.g. coupon code)",
            "High-priority, and timely announcements related to an ongoing event. These types of posts are not always available for authoring."
          ],
          "enum": [
            "LOCAL_POST_TOPIC_TYPE_UNSPECIFIED",
            "STANDARD",
            "EVENT",
            "OFFER",
            "ALERT"
          ]
        },
        "alertType": {
          "description": "The type of alert the post is created for. This field is only applicable for posts of topic_type Alert, and behaves as a sub-type of Alerts.",
          "type": "string",
          "enumDescriptions": [
            "No alert is specified.",
            "Alerts related to the 2019 Coronavirus Disease pandemic. Covid posts only support a summary field and a call to action field. When these alerts are no longer relevant, new Alert post creation for type COVID-19 will be disabled. However, merchant will still be able to manage their existing COVID-19 posts."
          ],
          "enum": [
            "ALERT_TYPE_UNSPECIFIED",
            "COVID_19"
          ]
        },
        "offer": {
          "description": "Additional data for offer posts. This should only be set when the topic_type is OFFER.",
          "$ref": "LocalPostOffer"
        }
      }
    },
    "CallToAction": {
      "id": "CallToAction",
      "description": "An action that is performed when the user clicks through the post",
      "type": "object",
      "properties": {
        "actionType": {
          "description": "The type of action that will be performed.",
          "type": "string",
          "enumDescriptions": [
            "Type unspecified.",
            "This post wants a user to book an appointment\/table\/etc.",
            "This post wants a user to order something.",
            "This post wants a user to browse a product catalog.",
            "This post wants a user to learn more (at their website).",
            "This post wants a user to register\/sign up\/join something.",
            "Deprecated. Use `OFFER` in `LocalPostTopicType` to create a post with offer content.",
            "This post wants a user to call the business."
          ],
          "enum": [
            "ACTION_TYPE_UNSPECIFIED",
            "BOOK",
            "ORDER",
            "SHOP",
            "LEARN_MORE",
            "SIGN_UP",
            "GET_OFFER",
            "CALL"
          ]
        },
        "url": {
          "description": "The URL the user will be directed to upon clicking. This field should be left unset for Call CTA.",
          "type": "string"
        }
      }
    },
    "LocalPostEvent": {
      "id": "LocalPostEvent",
      "description": "All the information pertaining to an event featured in a local post.",
      "type": "object",
      "properties": {
        "title": {
          "description": "Name of the event.",
          "type": "string"
        },
        "schedule": {
          "description": "Event start and end date\/time.",
          "$ref": "TimeInterval"
        }
      }
    },
    "TimeInterval": {
      "id": "TimeInterval",
      "description": "An interval of time, inclusive. It must contain all fields to be valid.",
      "type": "object",
      "properties": {
        "startDate": {
          "description": "The start date of this period.",
          "$ref": "Date"
        },
        "startTime": {
          "description": "The start time of this period.",
          "$ref": "TimeOfDay"
        },
        "endDate": {
          "description": "The end date of this period.",
          "$ref": "Date"
        },
        "endTime": {
          "description": "The end time of this period.",
          "$ref": "TimeOfDay"
        }
      }
    },
    "MediaItem": {
      "id": "MediaItem",
      "description": "A single media item.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name for this media item. `accounts\/{account_id}\/locations\/{location_id}\/media\/{media_key}`",
          "type": "string"
        },
        "sourceUrl": {
          "description": "A publicly accessible URL where the media item can be retrieved from. When creating one of this or data_ref must be set to specify the source of the media item. If `source_url` was used when creating a media item, it will be populated with that source URL when the media item is retrieved. This field cannot be updated.",
          "type": "string"
        },
        "dataRef": {
          "description": "Input only. A reference to media item binary data as obtained by the `StartUploadMediaItemData` method. When creating a media item, either sourceUrl or dataRef must be set.",
          "$ref": "MediaItemDataRef"
        },
        "mediaFormat": {
          "description": "The format of this media item. Must be set when the media item is created, and is read-only on all other requests. Cannot be updated.",
          "type": "string",
          "enumDescriptions": [
            "Format unspecified.",
            "Media item is a photo. In this version, only photos are supported.",
            "Media item is a video."
          ],
          "enum": [
            "MEDIA_FORMAT_UNSPECIFIED",
            "PHOTO",
            "VIDEO"
          ]
        },
        "locationAssociation": {
          "description": "Required when calling `CreatePhoto`. Describes how this media item is connected to its location. Must be either a category (for example, EXTERIOR) or the ID of a price list item. This is required when adding new media to a location with `CreateMediaItem`. For other types of media, for example, photos on local posts, this will not be present.",
          "$ref": "LocationAssociation"
        },
        "googleUrl": {
          "description": "Output only. Google-hosted URL for this media item. This URL is not static since it may change over time. For video this will be a preview image with an overlaid play icon.",
          "type": "string"
        },
        "thumbnailUrl": {
          "description": "Output only. Where provided, the URL of a thumbnail image for this media item.",
          "type": "string"
        },
        "createTime": {
          "description": "Output only. Creation time of this media item.",
          "type": "string",
          "format": "google-datetime"
        },
        "dimensions": {
          "description": "Output only. The dimensions (width and height) in pixels.",
          "$ref": "Dimensions"
        },
        "insights": {
          "description": "Output only. Statistics for this media item.",
          "$ref": "MediaInsights"
        },
        "attribution": {
          "description": "Output only. Attribution information for customer media items. You must display this attribution as provided to your users and must not delete or alter the attribution.",
          "$ref": "Attribution"
        },
        "description": {
          "description": "Description for this media item. Descriptions cannot be modified through the Google My Business API, but can be set when creating a new media item that is not a cover photo.",
          "type": "string"
        }
      }
    },
    "MediaItemDataRef": {
      "id": "MediaItemDataRef",
      "description": "Reference to the photo binary data of a `MediaItem` uploaded through the Google My Business API. Create a data ref using StartUploadMediaItemData, and use this ref when uploading bytes to [UpdateMedia] and subsequently calling CreateMediaItem.",
      "type": "object",
      "properties": {
        "resourceName": {
          "description": "The unique ID for this media item's binary data. Used to upload the photo data with [UpdateMedia] and when creating a new media item from those bytes with CreateMediaItem. Example of uploading bytes: `curl -X POST -T{path_to_file} \"http:\/\/mybusiness.googleapis.com\/upload\/v1\/media\/{resource_name}?upload_type=media\"` For CreateMediaItem calls, set this as the `MediaItem` `data_ref`.",
          "type": "string"
        }
      }
    },
    "LocationAssociation": {
      "id": "LocationAssociation",
      "description": "How the media item is associated with its location.",
      "type": "object",
      "properties": {
        "category": {
          "description": "The category that this location photo belongs to.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified category.",
            "Cover photo. A location has only one cover photo.",
            "Profile photo. A location has only one profile photo.",
            "Logo photo.",
            "Exterior media.",
            "Interior media.",
            "Product media.",
            "'At-work' media.",
            "Food and drink media.",
            "Menu media.",
            "Common area media.",
            "Rooms media.",
            "Teams media.",
            "Additional, uncategorized media."
          ],
          "enum": [
            "CATEGORY_UNSPECIFIED",
            "COVER",
            "PROFILE",
            "LOGO",
            "EXTERIOR",
            "INTERIOR",
            "PRODUCT",
            "AT_WORK",
            "FOOD_AND_DRINK",
            "MENU",
            "COMMON_AREA",
            "ROOMS",
            "TEAMS",
            "ADDITIONAL"
          ]
        },
        "priceListItemId": {
          "description": "The ID of a price list item that this location photo is associated with.",
          "type": "string"
        }
      }
    },
    "Dimensions": {
      "id": "Dimensions",
      "description": "Dimensions of the media item.",
      "type": "object",
      "properties": {
        "widthPixels": {
          "description": "Width of the media item, in pixels.",
          "type": "integer",
          "format": "int32"
        },
        "heightPixels": {
          "description": "Height of the media item, in pixels.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "MediaInsights": {
      "id": "MediaInsights",
      "description": "Insights and statistics for the media item.",
      "type": "object",
      "properties": {
        "viewCount": {
          "description": "Output only. The number of times the media item has been viewed.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "Attribution": {
      "id": "Attribution",
      "description": "Attribution information for customer media items, such as the contributor's name and profile picture.",
      "type": "object",
      "properties": {
        "profileName": {
          "description": "The user name to attribute the media item to.",
          "type": "string"
        },
        "profilePhotoUrl": {
          "description": "URL of the attributed user's profile photo thumbnail.",
          "type": "string"
        },
        "takedownUrl": {
          "description": "The URL of the takedown page, where the media item can be reported if it is inappropriate.",
          "type": "string"
        },
        "profileUrl": {
          "description": "The URL of the attributed user's Google Maps profile page.",
          "type": "string"
        }
      }
    },
    "LocalPostOffer": {
      "id": "LocalPostOffer",
      "description": "Specific fields for offer posts.",
      "type": "object",
      "properties": {
        "couponCode": {
          "description": "Optional. Offer code that is usable in store or online.",
          "type": "string"
        },
        "redeemOnlineUrl": {
          "description": "Optional. Online link to redeem offer.",
          "type": "string"
        },
        "termsConditions": {
          "description": "Optional. Offer terms and conditions.",
          "type": "string"
        }
      }
    },
    "ListLocalPostsResponse": {
      "id": "ListLocalPostsResponse",
      "description": "Response message for ListLocalPosts",
      "type": "object",
      "properties": {
        "localPosts": {
          "description": "The returned list of local posts.",
          "type": "array",
          "items": {
            "$ref": "LocalPost"
          }
        },
        "nextPageToken": {
          "description": "If there are more local posts than the requested page size, then this field is populated with a token to fetch the next page of local posts on a subsequent call to `ListLocalPosts`.",
          "type": "string"
        }
      }
    },
    "ListLocationsResponse": {
      "id": "ListLocationsResponse",
      "description": "Response message for Locations.ListLocations.",
      "type": "object",
      "properties": {
        "locations": {
          "description": "The locations.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        },
        "nextPageToken": {
          "description": "If the number of locations exceeded the requested page size, this field is populated with a token to fetch the next page of locations on a subsequent call to `ListLocations`. If there are no more locations, this field is not present in the response.",
          "type": "string"
        },
        "totalSize": {
          "description": "The approximate number of Locations in the list irrespective of pagination.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "BatchGetLocationsRequest": {
      "id": "BatchGetLocationsRequest",
      "description": "Request message for Locations.BatchGetLocations.",
      "type": "object",
      "properties": {
        "locationNames": {
          "description": "A collection of locations to fetch, specified by their names.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "BatchGetLocationsResponse": {
      "id": "BatchGetLocationsResponse",
      "description": "Response message for Locations.BatchGetLocations.",
      "type": "object",
      "properties": {
        "locations": {
          "description": "A collection of locations.",
          "type": "array",
          "items": {
            "$ref": "Location"
          }
        }
      }
    },
    "GoogleUpdatedLocation": {
      "id": "GoogleUpdatedLocation",
      "description": "Represents a location that was modified by Google.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The Google-updated version of this location.",
          "$ref": "Location"
        },
        "diffMask": {
          "description": "The fields that Google updated.",
          "type": "string",
          "format": "google-fieldmask"
        }
      }
    },
    "FindMatchingLocationsRequest": {
      "id": "FindMatchingLocationsRequest",
      "description": "Request message for Locations.FindMatchingLocations.",
      "type": "object",
      "properties": {
        "languageCode": {
          "description": "The preferred language for the matching location (in BCP-47 format).",
          "type": "string"
        },
        "numResults": {
          "description": "The number of matches to return. The default value is 3, with a maximum of 10. Note that latency may increase if more are requested. There is no pagination.",
          "type": "integer",
          "format": "int32"
        },
        "maxCacheDuration": {
          "description": "Deprecated. This field is ignored for all requests.",
          "type": "string",
          "format": "google-duration"
        }
      }
    },
    "FindMatchingLocationsResponse": {
      "id": "FindMatchingLocationsResponse",
      "description": "Response message for Locations.FindMatchingLocations.",
      "type": "object",
      "properties": {
        "matchedLocations": {
          "description": "A collection of locations that are potential matches to the specified location, listed in order from best to least match. If there is an exact match, it will be in the first position.",
          "type": "array",
          "items": {
            "$ref": "MatchedLocation"
          }
        },
        "matchTime": {
          "description": "When the matching algorithm was last executed for this location.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "MatchedLocation": {
      "id": "MatchedLocation",
      "description": "Represents a possible match to a location.",
      "type": "object",
      "properties": {
        "location": {
          "description": "The sparsely populated location that is a potential match. Unpopulated fields include, but may not be limited to: name (the matched location cannot be retrieved via `GetLocation` nor `BatchGetLocations`); `store_code`; `service_area` coverage area details; `labels`; `ad_words_location_extensions`; `photos`",
          "$ref": "Location"
        },
        "isExactMatch": {
          "description": "Is this an exact match?",
          "type": "boolean"
        }
      }
    },
    "AssociateLocationRequest": {
      "id": "AssociateLocationRequest",
      "description": "Request message for Locations.AssociateLocationRequest.",
      "type": "object",
      "properties": {
        "placeId": {
          "description": "The association to establish. If not set, it indicates no match.",
          "type": "string"
        }
      }
    },
    "ClearLocationAssociationRequest": {
      "id": "ClearLocationAssociationRequest",
      "description": "Request message for Locations.ClearLocationAssociationRequest.",
      "type": "object",
      "properties": {
      }
    },
    "Chain": {
      "id": "Chain",
      "description": "A chain is a brand that your business's locations can be affiliated with.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The chain's resource name, in the format `chains\/{chain_place_id}`.",
          "type": "string"
        },
        "chainNames": {
          "description": "Names of the chain.",
          "type": "array",
          "items": {
            "$ref": "ChainName"
          }
        },
        "websites": {
          "description": "Websites of the chain.",
          "type": "array",
          "items": {
            "$ref": "ChainUrl"
          }
        },
        "locationCount": {
          "description": "Number of locations that are part of this chain.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "ChainName": {
      "id": "ChainName",
      "description": "Name to be used when displaying the chain.",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "The display name for this chain.",
          "type": "string"
        },
        "languageCode": {
          "description": "The BCP 47 code of language of the name.",
          "type": "string"
        }
      }
    },
    "ChainUrl": {
      "id": "ChainUrl",
      "description": "Url to be used when displaying the chain.",
      "type": "object",
      "properties": {
        "url": {
          "description": "The url for this chain.",
          "type": "string"
        }
      }
    },
    "SearchChainsResponse": {
      "id": "SearchChainsResponse",
      "description": "Response message for Locations.SearchChains.",
      "type": "object",
      "properties": {
        "chains": {
          "description": "Chains that match the queried chain_display_name in SearchChainsRequest. If there are no matches, this field will be empty. Results are listed in order of relevance.",
          "type": "array",
          "items": {
            "$ref": "Chain"
          }
        }
      }
    },
    "TransferLocationRequest": {
      "id": "TransferLocationRequest",
      "description": "Request message for Locations.TransferLocation.",
      "type": "object",
      "properties": {
        "toAccount": {
          "description": "Name of the account resource to transfer the location to (for example, \"accounts\/8675309\").",
          "type": "string"
        }
      }
    },
    "ListAttributeMetadataResponse": {
      "id": "ListAttributeMetadataResponse",
      "description": "Response message for Locations.ListAttributeMetadata.",
      "type": "object",
      "properties": {
        "attributes": {
          "description": "A collection of attribute metadata for the available attributes.",
          "type": "array",
          "items": {
            "$ref": "AttributeMetadata"
          }
        },
        "nextPageToken": {
          "description": "If the number of attributes exceeded the requested page size, this field will be populated with a token to fetch the next page of attributes on a subsequent call to `attributes.list`. If there are no more attributes, this field will not be present in the response.",
          "type": "string"
        }
      }
    },
    "AttributeMetadata": {
      "id": "AttributeMetadata",
      "description": "Metadata for an attribute. Contains display information for the attribute, including a localized name and a heading for grouping related attributes together.",
      "type": "object",
      "properties": {
        "attributeId": {
          "description": "The ID of the attribute.",
          "type": "string"
        },
        "valueType": {
          "description": "The value type for the attribute. Values set and retrieved should be expected to be of this type.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The values for this attribute are boolean values.",
            "The attribute has a predetermined list of available values that can be used. Metadata for this attribute will list these values.",
            "The values for this attribute are URLs.",
            "The attribute value is an enum with multiple possible values that can be explicitly set or unset."
          ],
          "enum": [
            "ATTRIBUTE_VALUE_TYPE_UNSPECIFIED",
            "BOOL",
            "ENUM",
            "URL",
            "REPEATED_ENUM"
          ]
        },
        "displayName": {
          "description": "The localized display name for the attribute, if available; otherwise, the English display name.",
          "type": "string"
        },
        "groupDisplayName": {
          "description": "The localized display name of the group that contains this attribute, if available; otherwise, the English group name. Related attributes are collected into a group and should be displayed together under the heading given here.",
          "type": "string"
        },
        "isRepeatable": {
          "description": "If true, the attribute supports multiple values. If false, only a single value should be provided.",
          "type": "boolean"
        },
        "valueMetadata": {
          "description": "For some types of attributes (for example, enums), a list of supported values and corresponding display names for those values is provided.",
          "type": "array",
          "items": {
            "$ref": "AttributeValueMetadata"
          }
        },
        "isDeprecated": {
          "description": "If true, the attribute is deprecated and should no longer be used. If deprecated, updating this attribute will not result in an error, but updates will not be saved. At some point after being deprecated, the attribute will be removed entirely and it will become an error.",
          "type": "boolean"
        }
      }
    },
    "AttributeValueMetadata": {
      "id": "AttributeValueMetadata",
      "description": "Metadata for supported attribute values.",
      "type": "object",
      "properties": {
        "value": {
          "description": "The attribute value.",
          "type": "any"
        },
        "displayName": {
          "description": "The display name for this value, localized where available; otherwise, in English. The value display name is intended to be used in context with the attribute display name. For example, for a \"WiFi\" enum attribute, this could contain \"Paid\" to represent paid Wi-Fi.",
          "type": "string"
        }
      }
    },
    "Lodging": {
      "id": "Lodging",
      "description": "Lodging of a location that provides accomodations.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/lodging`",
          "type": "string"
        },
        "metadata": {
          "description": "Required. Metadata for the lodging.",
          "$ref": "LodgingMetadata"
        },
        "property": {
          "description": "General factual information about the property's physical structure and important dates.",
          "$ref": "Property"
        },
        "services": {
          "description": "Conveniences or help provided by the property to facilitate an easier, more comfortable stay.",
          "$ref": "Services"
        },
        "policies": {
          "description": "Property rules that impact guests.",
          "$ref": "Policies"
        },
        "foodAndDrink": {
          "description": "Meals, snacks, and beverages available at the property.",
          "$ref": "FoodAndDrink"
        },
        "pools": {
          "description": "Swimming pool or recreational water facilities available at the hotel.",
          "$ref": "Pools"
        },
        "wellness": {
          "description": "Guest facilities at the property to promote or maintain health, beauty, and fitness.",
          "$ref": "Wellness"
        },
        "activities": {
          "description": "Amenities and features related to leisure and play.",
          "$ref": "Activities"
        },
        "transportation": {
          "description": "Vehicles or vehicular services facilitated or owned by the property.",
          "$ref": "Transportation"
        },
        "families": {
          "description": "Services and amenities for families and young guests.",
          "$ref": "Families"
        },
        "connectivity": {
          "description": "The ways in which the property provides guests with the ability to access the internet.",
          "$ref": "Connectivity"
        },
        "business": {
          "description": "Features of the property of specific interest to the business traveler.",
          "$ref": "Business"
        },
        "accessibility": {
          "description": "Physical adaptations made to the property in consideration of varying levels of human physical ability.",
          "$ref": "Accessibility"
        },
        "pets": {
          "description": "Policies regarding guest-owned animals.",
          "$ref": "Pets"
        },
        "parking": {
          "description": "Parking options at the property.",
          "$ref": "Parking"
        },
        "housekeeping": {
          "description": "Conveniences provided in guest units to facilitate an easier, more comfortable stay.",
          "$ref": "Housekeeping"
        },
        "healthAndSafety": {
          "description": "Health and safety measures implemented by the hotel during COVID-19.",
          "$ref": "HealthAndSafety"
        },
        "commonLivingArea": {
          "description": "Features of the shared living areas available in this Lodging.",
          "$ref": "LivingArea"
        },
        "allUnits": {
          "description": "All units on the property have at least these attributes.",
          "$ref": "GuestUnitFeatures"
        },
        "someUnits": {
          "description": "Some units on the property have as much as these attributes.",
          "$ref": "GuestUnitFeatures"
        },
        "guestUnits": {
          "description": "Individual GuestUnitTypes that are available in this Lodging.",
          "type": "array",
          "items": {
            "$ref": "GuestUnitType"
          }
        }
      }
    },
    "LodgingMetadata": {
      "id": "LodgingMetadata",
      "description": "Metadata for the Lodging.",
      "type": "object",
      "properties": {
        "updateTime": {
          "description": "Required. The latest time at which the Lodging data is asserted to be true in the real world. This is not necessarily the time at which the request is made.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "Property": {
      "id": "Property",
      "description": "General factual information about the property's physical structure and important dates.",
      "type": "object",
      "properties": {
        "builtYear": {
          "description": "Built year. The year that construction of the property was completed.",
          "type": "integer",
          "format": "int32"
        },
        "builtYearException": {
          "description": "Built year exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "lastRenovatedYear": {
          "description": "Last renovated year. The year when the most recent renovation of the property was completed. Renovation may include all or any combination of the following: the units, the public spaces, the exterior, or the interior.",
          "type": "integer",
          "format": "int32"
        },
        "lastRenovatedYearException": {
          "description": "Last renovated year exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "roomsCount": {
          "description": "Rooms count. The total number of rooms and suites bookable by guests for an overnight stay. Does not include event space, public spaces, conference rooms, fitness rooms, business centers, spa, salon, restaurants\/bars, or shops.",
          "type": "integer",
          "format": "int32"
        },
        "roomsCountException": {
          "description": "Rooms count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "floorsCount": {
          "description": "Floors count. The number of stories the building has from the ground floor to the top floor that are accessible to guests.",
          "type": "integer",
          "format": "int32"
        },
        "floorsCountException": {
          "description": "Floors count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Services": {
      "id": "Services",
      "description": "Conveniences or help provided by the property to facilitate an easier, more comfortable stay.",
      "type": "object",
      "properties": {
        "frontDesk": {
          "description": "Front desk. A counter or desk in the lobby or the immediate interior of the hotel where a member of the staff greets guests and processes the information related to their stay (including check-in and check-out). May or may not be manned and open 24\/7.",
          "type": "boolean"
        },
        "frontDeskException": {
          "description": "Front desk exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "twentyFourHourFrontDesk": {
          "description": "24hr front desk. Front desk is staffed 24 hours a day.",
          "type": "boolean"
        },
        "twentyFourHourFrontDeskException": {
          "description": "24hr front desk exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "concierge": {
          "description": "Concierge. Hotel staff member(s) responsible for facilitating an easy, comfortable stay through making reservations for meals, sourcing theater tickets, arranging tours, finding a doctor, making recommendations, and answering questions.",
          "type": "boolean"
        },
        "conciergeException": {
          "description": "Concierge exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "elevator": {
          "description": "Elevator. A passenger elevator that transports guests from one story to another. Also known as lift.",
          "type": "boolean"
        },
        "elevatorException": {
          "description": "Elevator exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "baggageStorage": {
          "description": "Baggage storage. A provision for guests to leave their bags at the hotel when they arrive for their stay before the official check-in time. May or may not apply for guests who wish to leave their bags after check-out and before departing the locale. Also known as bag dropoff.",
          "type": "boolean"
        },
        "baggageStorageException": {
          "description": "Baggage storage exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "fullServiceLaundry": {
          "description": "Full service laundry. Laundry and dry cleaning facilitated and handled by the hotel on behalf of the guest. Does not include the provision for guests to do their own laundry in on-site machines.",
          "type": "boolean"
        },
        "fullServiceLaundryException": {
          "description": "Full service laundry exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "selfServiceLaundry": {
          "description": "Self service laundry. On-site clothes washers and dryers accessible to guests for the purpose of washing and drying their own clothes. May or may not require payment to use the machines.",
          "type": "boolean"
        },
        "selfServiceLaundryException": {
          "description": "Self service laundry exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "socialHour": {
          "description": "Social hour. A reception with complimentary soft drinks, tea, coffee, wine and\/or cocktails in the afternoon or evening. Can be hosted by hotel staff or guests may serve themselves. Also known as wine hour. The availability of coffee\/tea in the lobby throughout the day does not constitute a social or wine hour.",
          "type": "boolean"
        },
        "socialHourException": {
          "description": "Social hour exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "wakeUpCalls": {
          "description": "Wake up calls. By direction of the guest, a hotel staff member will phone the guest unit at the requested hour. Also known as morning call.",
          "type": "boolean"
        },
        "wakeUpCallsException": {
          "description": "Wake up calls exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "convenienceStore": {
          "description": "Convenience store. A shop at the hotel primarily selling snacks, drinks, non-prescription medicines, health and beauty aids, magazines and newspapers.",
          "type": "boolean"
        },
        "convenienceStoreException": {
          "description": "Convenience store exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "giftShop": {
          "description": "Gift shop. An on-site store primarily selling souvenirs, mementos and other gift items. May or may not also sell sundries, magazines and newspapers, clothing, or snacks.",
          "type": "boolean"
        },
        "giftShopException": {
          "description": "Gift shop exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "currencyExchange": {
          "description": "Currency exchange. A staff member or automated machine tasked with the transaction of providing the native currency of the hotel's locale in exchange for the foreign currency provided by a guest.",
          "type": "boolean"
        },
        "currencyExchangeException": {
          "description": "Currency exchange exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "languagesSpoken": {
          "description": "Languages spoken by at least one staff member.",
          "$ref": "LanguagesSpoken"
        }
      }
    },
    "LanguagesSpoken": {
      "id": "LanguagesSpoken",
      "description": "Languages spoken by at least one staff member.",
      "type": "object",
      "properties": {
        "arabicSpoken": {
          "description": "Arabic. At least one staff member speaks Arabic.",
          "type": "boolean"
        },
        "arabicSpokenException": {
          "description": "Arabic exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "cantoneseSpoken": {
          "description": "Cantonese. At least one staff member speaks Cantonese.",
          "type": "boolean"
        },
        "cantoneseSpokenException": {
          "description": "Cantonese exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "dutchSpoken": {
          "description": "Dutch. At least one staff member speaks Dutch.",
          "type": "boolean"
        },
        "dutchSpokenException": {
          "description": "Dutch exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "englishSpoken": {
          "description": "English. At least one staff member speaks English.",
          "type": "boolean"
        },
        "englishSpokenException": {
          "description": "English exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "filipinoSpoken": {
          "description": "Filipino. At least one staff member speaks Filipino.",
          "type": "boolean"
        },
        "filipinoSpokenException": {
          "description": "Filipino exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "frenchSpoken": {
          "description": "French. At least one staff member speaks French.",
          "type": "boolean"
        },
        "frenchSpokenException": {
          "description": "French exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "germanSpoken": {
          "description": "German. At least one staff member speaks German.",
          "type": "boolean"
        },
        "germanSpokenException": {
          "description": "German exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hindiSpoken": {
          "description": "Hindi. At least one staff member speaks Hindi.",
          "type": "boolean"
        },
        "hindiSpokenException": {
          "description": "Hindi exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "indonesianSpoken": {
          "description": "Indonesian. At least one staff member speaks Indonesian.",
          "type": "boolean"
        },
        "indonesianSpokenException": {
          "description": "Indonesian exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "italianSpoken": {
          "description": "Italian. At least one staff member speaks Italian.",
          "type": "boolean"
        },
        "italianSpokenException": {
          "description": "Italian exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "japaneseSpoken": {
          "description": "Japanese. At least one staff member speaks Japanese.",
          "type": "boolean"
        },
        "japaneseSpokenException": {
          "description": "Japanese exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "koreanSpoken": {
          "description": "Korean. At least one staff member speaks Korean.",
          "type": "boolean"
        },
        "koreanSpokenException": {
          "description": "Korean exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mandarinSpoken": {
          "description": "Mandarin. At least one staff member speaks Mandarin.",
          "type": "boolean"
        },
        "mandarinSpokenException": {
          "description": "Mandarin exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "portugueseSpoken": {
          "description": "Portuguese. At least one staff member speaks Portuguese.",
          "type": "boolean"
        },
        "portugueseSpokenException": {
          "description": "Portuguese exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "russianSpoken": {
          "description": "Russian. At least one staff member speaks Russian.",
          "type": "boolean"
        },
        "russianSpokenException": {
          "description": "Russian exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "spanishSpoken": {
          "description": "Spanish. At least one staff member speaks Spanish.",
          "type": "boolean"
        },
        "spanishSpokenException": {
          "description": "Spanish exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "vietnameseSpoken": {
          "description": "Vietnamese. At least one staff member speaks Vietnamese.",
          "type": "boolean"
        },
        "vietnameseSpokenException": {
          "description": "Vietnamese exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Policies": {
      "id": "Policies",
      "description": "Property rules that impact guests.",
      "type": "object",
      "properties": {
        "checkinTime": {
          "description": "Check-in time. The time of the day at which the hotel begins providing guests access to their unit at the beginning of their stay.",
          "$ref": "TimeOfDay"
        },
        "checkinTimeException": {
          "description": "Check-in time exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "checkoutTime": {
          "description": "Check-out time. The time of the day on the last day of a guest's reserved stay at which the guest must vacate their room and settle their bill. Some hotels may offer late or early check out for a fee.",
          "$ref": "TimeOfDay"
        },
        "checkoutTimeException": {
          "description": "Check-out time exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "kidsStayFree": {
          "description": "Kids stay free. The children of guests are allowed to stay in the room\/suite of a parent or adult without an additional fee. The policy may or may not stipulate a limit of the child's age or the overall number of children allowed.",
          "type": "boolean"
        },
        "kidsStayFreeException": {
          "description": "Kids stay free exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "maxKidsStayFreeCount": {
          "description": "Max kids stay free count. The hotel allows a specific, defined number of children to stay in the room\/suite of a parent or adult without an additional fee.",
          "type": "integer",
          "format": "int32"
        },
        "maxKidsStayFreeCountException": {
          "description": "Max kids stay free count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "maxChildAge": {
          "description": "Max child age. The hotel allows children up to a certain age to stay in the room\/suite of a parent or adult without an additional fee.",
          "type": "integer",
          "format": "int32"
        },
        "maxChildAgeException": {
          "description": "Max child age exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "smokeFreeProperty": {
          "description": "Smoke free property. Smoking is not allowed inside the building, on balconies, or in outside spaces. Hotels that offer a designated area for guests to smoke are not considered smoke-free properties.",
          "type": "boolean"
        },
        "smokeFreePropertyException": {
          "description": "Smoke free property exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "allInclusiveAvailable": {
          "description": "All inclusive available. The hotel offers a rate option that includes the cost of the room, meals, activities, and other amenities that might otherwise be charged separately.",
          "type": "boolean"
        },
        "allInclusiveAvailableException": {
          "description": "All inclusive available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "allInclusiveOnly": {
          "description": "All inclusive only. The only rate option offered by the hotel is a rate that includes the cost of the room, meals, activities and other amenities that might otherwise be charged separately.",
          "type": "boolean"
        },
        "allInclusiveOnlyException": {
          "description": "All inclusive only exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "paymentOptions": {
          "description": "Forms of payment accepted at the property.",
          "$ref": "PaymentOptions"
        }
      }
    },
    "PaymentOptions": {
      "id": "PaymentOptions",
      "description": "Forms of payment accepted at the property.",
      "type": "object",
      "properties": {
        "cash": {
          "description": "Cash. The hotel accepts payment by paper\/coin currency.",
          "type": "boolean"
        },
        "cashException": {
          "description": "Cash exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "cheque": {
          "description": "Cheque. The hotel accepts a printed document issued by the guest's bank in the guest's name as a form of payment.",
          "type": "boolean"
        },
        "chequeException": {
          "description": "Cheque exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "creditCard": {
          "description": "Credit card. The hotel accepts payment by a card issued by a bank or credit card company. Also known as charge card, debit card, bank card, or charge plate.",
          "type": "boolean"
        },
        "creditCardException": {
          "description": "Credit card exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "debitCard": {
          "description": "Debit card. The hotel accepts a bank-issued card that immediately deducts the charged funds from the guest's bank account upon processing.",
          "type": "boolean"
        },
        "debitCardException": {
          "description": "Debit card exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobileNfc": {
          "description": "Mobile nfc. The hotel has the compatible computer hardware terminal that reads and charges a payment app on the guest's smartphone without requiring the two devices to make physical contact. Also known as Apple Pay, Google Pay, Samsung Pay.",
          "type": "boolean"
        },
        "mobileNfcException": {
          "description": "Mobile nfc exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "FoodAndDrink": {
      "id": "FoodAndDrink",
      "description": "Meals, snacks, and beverages available at the property.",
      "type": "object",
      "properties": {
        "roomService": {
          "description": "Room service. A hotel staffer delivers meals prepared onsite to a guest's room as per their request. May or may not be available during specific hours. Services should be available to all guests (not based on rate\/room booked\/reward program, etc).",
          "type": "boolean"
        },
        "roomServiceException": {
          "description": "Room service exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "twentyFourHourRoomService": {
          "description": "24hr room service. Room service is available 24 hours a day.",
          "type": "boolean"
        },
        "twentyFourHourRoomServiceException": {
          "description": "24hr room service exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "restaurant": {
          "description": "Restaurant. A business onsite at the hotel that is open to the public as well as guests, and offers meals and beverages to consume at tables or counters. May or may not include table service. Also known as cafe, buffet, eatery. A \"breakfast room\" where the hotel serves breakfast only to guests (not the general public) does not count as a restaurant.",
          "type": "boolean"
        },
        "restaurantException": {
          "description": "Restaurant exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "restaurantsCount": {
          "description": "Restaurants count. The number of restaurants at the hotel.",
          "type": "integer",
          "format": "int32"
        },
        "restaurantsCountException": {
          "description": "Restaurants count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "tableService": {
          "description": "Table service. A restaurant in which a staff member is assigned to a guest's table to take their order, deliver and clear away food, and deliver the bill, if applicable. Also known as sit-down restaurant.",
          "type": "boolean"
        },
        "tableServiceException": {
          "description": "Table service exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "buffet": {
          "description": "Buffet. A type of meal where guests serve themselves from a variety of dishes\/foods that are put out on a table. Includes lunch and\/or dinner meals. A breakfast-only buffet is not sufficient.",
          "type": "boolean"
        },
        "buffetException": {
          "description": "Buffet exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "dinnerBuffet": {
          "description": "Dinner buffet. Dinner meal service where guests serve themselves from a variety of dishes\/foods that are put out on a table.",
          "type": "boolean"
        },
        "dinnerBuffetException": {
          "description": "Dinner buffet exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "breakfastBuffet": {
          "description": "Breakfast buffet. Breakfast meal service where guests serve themselves from a variety of dishes\/foods that are put out on a table.",
          "type": "boolean"
        },
        "breakfastBuffetException": {
          "description": "Breakfast buffet exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "breakfastAvailable": {
          "description": "Breakfast available. The morning meal is offered to all guests. Can be free or for a fee.",
          "type": "boolean"
        },
        "breakfastAvailableException": {
          "description": "Breakfast available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeBreakfast": {
          "description": "Free breakfast. Breakfast is offered for free to all guests. Does not apply if limited to certain room packages.",
          "type": "boolean"
        },
        "freeBreakfastException": {
          "description": "Free breakfast exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "bar": {
          "description": "Bar. A designated room, lounge or area of an on-site restaurant with seating at a counter behind which a hotel staffer takes the guest's order and provides the requested alcoholic drink. Can be indoors or outdoors. Also known as Pub.",
          "type": "boolean"
        },
        "barException": {
          "description": "Bar exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "vendingMachine": {
          "description": "Vending machine. A glass-fronted mechanized cabinet displaying and dispensing snacks and beverages for purchase by coins, paper money and\/or credit cards.",
          "type": "boolean"
        },
        "vendingMachineException": {
          "description": "Vending machine exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Pools": {
      "id": "Pools",
      "description": "Swimming pool or recreational water facilities available at the hotel.",
      "type": "object",
      "properties": {
        "pool": {
          "description": "Pool. The presence of a pool, either indoors or outdoors, for guests to use for swimming and\/or soaking. Use may or may not be restricted to adults and\/or children.",
          "type": "boolean"
        },
        "poolException": {
          "description": "Pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "poolsCount": {
          "description": "Pools count. The sum of all pools at the hotel.",
          "type": "integer",
          "format": "int32"
        },
        "poolsCountException": {
          "description": "Pools count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "indoorPool": {
          "description": "Indoor pool. A pool located inside the hotel and available for guests to use for swimming and\/or soaking. Use may or may not be restricted to adults and\/or children.",
          "type": "boolean"
        },
        "indoorPoolException": {
          "description": "Indoor pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "indoorPoolsCount": {
          "description": "Indoor pools count. The sum of all indoor pools at the hotel.",
          "type": "integer",
          "format": "int32"
        },
        "indoorPoolsCountException": {
          "description": "Indoor pools count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "outdoorPool": {
          "description": "Outdoor pool. A pool located outside on the grounds of the hotel and available for guests to use for swimming, soaking or recreation. Use may or may not be restricted to adults and\/or children.",
          "type": "boolean"
        },
        "outdoorPoolException": {
          "description": "Outdoor pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "outdoorPoolsCount": {
          "description": "Outdoor pools count. The sum of all outdoor pools at the hotel.",
          "type": "integer",
          "format": "int32"
        },
        "outdoorPoolsCountException": {
          "description": "Outdoor pools count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hotTub": {
          "description": "Hot tub. A man-made pool containing bubbling water maintained at a higher temperature and circulated by aerating jets for the purpose of soaking, relaxation and hydrotherapy. Can be indoors or outdoors. Not used for active swimming. Also known as Jacuzzi. Hot tub must be in a common area where all guests can access it. Does not apply to room-specific hot tubs that are only accessible to guest occupying that room.",
          "type": "boolean"
        },
        "hotTubException": {
          "description": "Hot tub exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "waterslide": {
          "description": "Waterslide. A continuously wetted chute positioned by an indoor or outdoor pool which people slide down into the water.",
          "type": "boolean"
        },
        "waterslideException": {
          "description": "Waterslide exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "lazyRiver": {
          "description": "Lazy river. A man-made pool or several interconnected recreational pools built to mimic the shape and current of a winding river where guests float in the water on inflated rubber tubes. Can be indoors or outdoors.",
          "type": "boolean"
        },
        "lazyRiverException": {
          "description": "Lazy river exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "adultPool": {
          "description": "Adult pool. A pool restricted for use by adults only. Can be indoors or outdoors.",
          "type": "boolean"
        },
        "adultPoolException": {
          "description": "Adult pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "wadingPool": {
          "description": "Wading pool. A shallow pool designed for small children to play in. Can be indoors or outdoors. Also known as kiddie pool.",
          "type": "boolean"
        },
        "wadingPoolException": {
          "description": "Wading pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "wavePool": {
          "description": "Wave pool. A large indoor or outdoor pool with a machine that produces water currents to mimic the ocean's crests.",
          "type": "boolean"
        },
        "wavePoolException": {
          "description": "Wave pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "waterPark": {
          "description": "Water park. An aquatic recreation area with a large pool or series of pools that has features such as a water slide or tube, wavepool, fountains, rope swings, and\/or obstacle course. Can be indoors or outdoors. Also known as adventure pool.",
          "type": "boolean"
        },
        "waterParkException": {
          "description": "Water park exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "lifeguard": {
          "description": "Lifeguard. A trained member of the hotel staff stationed by the hotel's indoor or outdoor swimming area and responsible for the safety of swimming guests.",
          "type": "boolean"
        },
        "lifeguardException": {
          "description": "Lifeguard exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Wellness": {
      "id": "Wellness",
      "description": "Guest facilities at the property to promote or maintain health, beauty, and fitness.",
      "type": "object",
      "properties": {
        "fitnessCenter": {
          "description": "Fitness center. A room or building at the hotel containing equipment to promote physical activity, such as treadmills, elliptical machines, stationary bikes, weight machines, free weights, and\/or stretching mats. Use of the fitness center can be free or for a fee. May or may not be staffed. May or may not offer instructor-led classes in various styles of physical conditioning. May or may not be open 24\/7. May or may not include locker rooms and showers. Also known as health club, gym, fitness room, health center.",
          "type": "boolean"
        },
        "fitnessCenterException": {
          "description": "Fitness center exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeFitnessCenter": {
          "description": "Free fitness center. Guests may use the fitness center for free.",
          "type": "boolean"
        },
        "freeFitnessCenterException": {
          "description": "Free fitness center exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "ellipticalMachine": {
          "description": "Elliptical machine. An electric, stationary fitness machine with pedals that simulates climbing, walking or running and provides a user-controlled range of speeds and tensions. May not have arm-controlled levers to work out the upper body as well. Commonly found in a gym, fitness room, health center, or health club.",
          "type": "boolean"
        },
        "ellipticalMachineException": {
          "description": "Elliptical machine exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "treadmill": {
          "description": "Treadmill. An electric stationary fitness machine that simulates a moving path to promote walking or running within a range of user-controlled speeds and inclines. Also known as running machine. Commonly found in a gym, fitness room, health center, or health club.",
          "type": "boolean"
        },
        "treadmillException": {
          "description": "Treadmill exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "weightMachine": {
          "description": "Weight machine. Non-electronic fitness equipment designed for the user to target the exertion of different muscles. Usually incorporates a padded seat, a stack of flat weights and various bars and pulleys. May be designed for toning a specific part of the body or may involve different user-controlled settings, hardware and pulleys so as to provide an overall workout in one machine. Commonly found in a gym, fitness center, fitness room, or health club.",
          "type": "boolean"
        },
        "weightMachineException": {
          "description": "Weight machine exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeWeights": {
          "description": "Free weights. Individual handheld fitness equipment of varied weights used for upper body strength training or bodybuilding. Also known as barbells, dumbbells, or kettlebells. Often stored on a rack with the weights arranged from light to heavy. Commonly found in a gym, fitness room, health center, or health club.",
          "type": "boolean"
        },
        "freeWeightsException": {
          "description": "Free weights exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "spa": {
          "description": "Spa. A designated area, room or building at the hotel offering health and beauty treatment through such means as steam baths, exercise equipment, and massage. May also offer facials, nail care, and hair care. Services are usually available by appointment and for an additional fee. Does not apply if hotel only offers a steam room; must offer other beauty and\/or health treatments as well.",
          "type": "boolean"
        },
        "spaException": {
          "description": "Spa exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "salon": {
          "description": "Salon. A room at the hotel where professionals provide hair styling services such as shampooing, blow drying, hair dos, hair cutting and hair coloring. Also known as hairdresser or beauty salon.",
          "type": "boolean"
        },
        "salonException": {
          "description": "Salon exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "sauna": {
          "description": "Sauna. A wood-paneled room heated to a high temperature where guests sit on built-in wood benches for the purpose of perspiring and relaxing their muscles. Can be dry or slightly wet heat. Not a steam room.",
          "type": "boolean"
        },
        "saunaException": {
          "description": "Sauna exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "massage": {
          "description": "Massage. A service provided by a trained massage therapist involving the physical manipulation of a guest's muscles in order to achieve relaxation or pain relief.",
          "type": "boolean"
        },
        "massageException": {
          "description": "Massage exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "doctorOnCall": {
          "description": "Doctor on call. The hotel has a contract with a medical professional who provides services to hotel guests should they fall ill during their stay. The doctor may or may not have an on-site office or be at the hotel at all times.",
          "type": "boolean"
        },
        "doctorOnCallException": {
          "description": "Doctor on call exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Activities": {
      "id": "Activities",
      "description": "Amenities and features related to leisure and play.",
      "type": "object",
      "properties": {
        "gameRoom": {
          "description": "Game room. There is a room at the hotel containing electronic machines for play such as pinball, prize machines, driving simulators, and other items commonly found at a family fun center or arcade. May also include non-electronic games like pool, foosball, darts, and more. May or may not be designed for children. Also known as arcade, fun room, or family fun center.",
          "type": "boolean"
        },
        "gameRoomException": {
          "description": "Game room exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "nightclub": {
          "description": "Nightclub. There is a room at the hotel with a bar, a dance floor, and seating where designated staffers play dance music. There may also be a designated area for the performance of live music, singing and comedy acts.",
          "type": "boolean"
        },
        "nightclubException": {
          "description": "Nightclub exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "casino": {
          "description": "Casino. A space designated for gambling and gaming featuring croupier-run table and card games, as well as electronic slot machines. May be on hotel premises or located nearby.",
          "type": "boolean"
        },
        "casinoException": {
          "description": "Casino exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "boutiqueStores": {
          "description": "Boutique stores. There are stores selling clothing, jewelry, art and decor either on hotel premises or very close by. Does not refer to the hotel gift shop or convenience store.",
          "type": "boolean"
        },
        "boutiqueStoresException": {
          "description": "Boutique stores exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "tennis": {
          "description": "Tennis. The hotel has the requisite court(s) on site or has an affiliation with a nearby facility for the purpose of providing guests with the opportunity to play a two-sided court-based game in which players use a stringed racquet to hit a ball across a net to the side of the opposing player. The court can be indoors or outdoors. Instructors, racquets and balls may or may not be provided.",
          "type": "boolean"
        },
        "tennisException": {
          "description": "Tennis exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "golf": {
          "description": "Golf. There is a golf course on hotel grounds or there is a nearby, independently run golf course that allows use by hotel guests. Can be free or for a fee.",
          "type": "boolean"
        },
        "golfException": {
          "description": "Golf exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "horsebackRiding": {
          "description": "Horseback riding. The hotel has a horse barn onsite or an affiliation with a nearby barn to allow for guests to sit astride a horse and direct it to walk, trot, cantor, gallop and\/or jump. Can be in a riding ring, on designated paths, or in the wilderness. May or may not involve instruction.",
          "type": "boolean"
        },
        "horsebackRidingException": {
          "description": "Horseback riding exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "snorkeling": {
          "description": "Snorkeling. The provision for guests to participate in a recreational water activity in which swimmers wear a diving mask, a simple, shaped breathing tube and flippers\/swim fins for the purpose of exploring below the surface of an ocean, gulf or lake. Does not usually require user certification or professional supervision. Equipment may or may not be available for rent or purchase. Not scuba diving.",
          "type": "boolean"
        },
        "snorkelingException": {
          "description": "Snorkeling exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "scuba": {
          "description": "Scuba. The provision for guests to dive under naturally occurring water fitted with a self-contained underwater breathing apparatus (SCUBA) for the purpose of exploring underwater life. Apparatus consists of a tank providing oxygen to the diver through a mask. Requires certification of the diver and supervision. The hotel may have the activity at its own waterfront or have an affiliation with a nearby facility. Required equipment is most often supplied to guests. Can be free or for a fee. Not snorkeling. Not done in a swimming pool.",
          "type": "boolean"
        },
        "scubaException": {
          "description": "Scuba exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "waterSkiing": {
          "description": "Water skiing. The provision of giving guests the opportunity to be pulled across naturally occurring water while standing on skis and holding a tow rope attached to a motorboat. Can occur on hotel premises or at a nearby waterfront. Most often performed in a lake or ocean.",
          "type": "boolean"
        },
        "waterSkiingException": {
          "description": "Water skiing exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "bicycleRental": {
          "description": "Bicycle rental. The hotel owns bicycles that it permits guests to borrow and use. Can be free or for a fee.",
          "type": "boolean"
        },
        "bicycleRentalException": {
          "description": "Bicycle rental exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeBicycleRental": {
          "description": "Free bicycle rental. The hotel owns bicycles that it permits guests to borrow and use for free.",
          "type": "boolean"
        },
        "freeBicycleRentalException": {
          "description": "Free bicycle rental exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "watercraftRental": {
          "description": "Watercraft rental. The hotel owns water vessels that it permits guests to borrow and use. Can be free or for a fee. Watercraft may include boats, pedal boats, rowboats, sailboats, powerboats, canoes, kayaks, or personal watercraft (such as a Jet Ski).",
          "type": "boolean"
        },
        "watercraftRentalException": {
          "description": "Watercraft rental exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeWatercraftRental": {
          "description": "Free watercraft rental. The hotel owns watercraft that it permits guests to borrow and use for free.",
          "type": "boolean"
        },
        "freeWatercraftRentalException": {
          "description": "Free Watercraft rental exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "beachAccess": {
          "description": "Beach access. The hotel property is in close proximity to a beach and offers a way to get to that beach. This can include a route to the beach such as stairs down if hotel is on a bluff, or a short trail. Not the same as beachfront (with beach access, the hotel's proximity is close to but not right on the beach).",
          "type": "boolean"
        },
        "beachAccessException": {
          "description": "Beach access exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "privateBeach": {
          "description": "Private beach. The beach which is in close proximity to the hotel is open only to guests.",
          "type": "boolean"
        },
        "privateBeachException": {
          "description": "Private beach exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "beachFront": {
          "description": "Breach front. The hotel property is physically located on the beach alongside an ocean, sea, gulf, or bay. It is not on a lake, river, stream, or pond. The hotel is not separated from the beach by a public road allowing vehicular, pedestrian, or bicycle traffic.",
          "type": "boolean"
        },
        "beachFrontException": {
          "description": "Beach front exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Transportation": {
      "id": "Transportation",
      "description": "Vehicles or vehicular services facilitated or owned by the property.",
      "type": "object",
      "properties": {
        "transfer": {
          "description": "Transfer. Hotel provides a shuttle service or car service to take guests to and from the nearest airport or train station. Can be free or for a fee. Guests may share the vehicle with other guests unknown to them.",
          "type": "boolean"
        },
        "transferException": {
          "description": "Transfer exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "airportShuttle": {
          "description": "Airport shuttle. The hotel provides guests with a chauffeured van or bus to and from the airport. Can be free or for a fee. Guests may share the vehicle with other guests unknown to them. Applies if the hotel has a third-party shuttle service (office\/desk etc.) within the hotel. As long as hotel provides this service, it doesn't matter if it's directly with them or a third party they work with. Does not apply if guest has to coordinate with an entity outside\/other than the hotel.",
          "type": "boolean"
        },
        "airportShuttleException": {
          "description": "Airport shuttle exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeAirportShuttle": {
          "description": "Free airport shuttle. Airport shuttle is free to guests. Must be free to all guests without any conditions.",
          "type": "boolean"
        },
        "freeAirportShuttleException": {
          "description": "Free airport shuttle exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "localShuttle": {
          "description": "Local shuttle. A car, van or bus provided by the hotel to transport guests to destinations within a specified range of distance around the hotel. Usually shopping and\/or convention centers, downtown districts, or beaches. Can be free or for a fee.",
          "type": "boolean"
        },
        "localShuttleException": {
          "description": "Local shuttle exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "carRentalOnProperty": {
          "description": "Car rental on property. A branch of a rental car company with a processing desk in the hotel. Available cars for rent may be awaiting at the hotel or in a nearby lot.",
          "type": "boolean"
        },
        "carRentalOnPropertyException": {
          "description": "Car rental on property exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "privateCarService": {
          "description": "Private car service. Hotel provides a private chauffeured car to transport guests to destinations. Passengers in the car are either alone or are known to one another and have requested the car together. Service can be free or for a fee and travel distance is usually limited to a specific range. Not a taxi.",
          "type": "boolean"
        },
        "privateCarServiceException": {
          "description": "Private car service exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freePrivateCarService": {
          "description": "Free private car service. Private chauffeured car service is free to guests.",
          "type": "boolean"
        },
        "freePrivateCarServiceException": {
          "description": "Free private car service exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Families": {
      "id": "Families",
      "description": "Services and amenities for families and young guests.",
      "type": "object",
      "properties": {
        "babysitting": {
          "description": "Babysitting. Child care that is offered by hotel staffers or coordinated by hotel staffers with local child care professionals. Can be free or for a fee.",
          "type": "boolean"
        },
        "babysittingException": {
          "description": "Babysitting exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "kidsActivities": {
          "description": "Kids activities. Recreational options such as sports, films, crafts and games designed for the enjoyment of children and offered at the hotel. May or may not be supervised. May or may not be at a designated time or place. Cab be free or for a fee.",
          "type": "boolean"
        },
        "kidsActivitiesException": {
          "description": "Kids activities exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "kidsClub": {
          "description": "Kids club. An organized program of group activities held at the hotel and designed for the enjoyment of children. Facilitated by hotel staff (or staff procured by the hotel) in an area(s) designated for the purpose of entertaining children without their parents. May include games, outings, water sports, team sports, arts and crafts, and films. Usually has set hours. Can be free or for a fee. Also known as Kids Camp or Kids program.",
          "type": "boolean"
        },
        "kidsClubException": {
          "description": "Kids club exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Connectivity": {
      "id": "Connectivity",
      "description": "The ways in which the property provides guests with the ability to access the internet.",
      "type": "object",
      "properties": {
        "wifiAvailable": {
          "description": "Wifi available. The hotel provides the ability for guests to wirelessly connect to the internet. Can be in the public areas of the hotel and\/or in the guest rooms. Can be free or for a fee.",
          "type": "boolean"
        },
        "wifiAvailableException": {
          "description": "Wifi available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeWifi": {
          "description": "Free wifi. The hotel offers guests wifi for free.",
          "type": "boolean"
        },
        "freeWifiException": {
          "description": "Free wifi exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "publicAreaWifiAvailable": {
          "description": "Public area wifi available. Guests have the ability to wirelessly connect to the internet in the areas of the hotel accessible to anyone. Can be free or for a fee.",
          "type": "boolean"
        },
        "publicAreaWifiAvailableException": {
          "description": "Public area wifi available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "publicInternetTerminal": {
          "description": "Public internet terminal. An area of the hotel supplied with computers and designated for the purpose of providing guests with the ability to access the internet.",
          "type": "boolean"
        },
        "publicInternetTerminalException": {
          "description": "Public internet terminal exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Business": {
      "id": "Business",
      "description": "Features of the property of specific interest to the business traveler.",
      "type": "object",
      "properties": {
        "businessCenter": {
          "description": "Business center. A designated room at the hotel with one or more desks and equipped with guest-use computers, printers, fax machines and\/or photocopiers. May or may not be open 24\/7. May or may not require a key to access. Not a meeting room or conference room.",
          "type": "boolean"
        },
        "businessCenterException": {
          "description": "Business center exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "meetingRooms": {
          "description": "Meeting rooms. Rooms at the hotel designated for business-related gatherings. Rooms are usually equipped with tables or desks, office chairs and audio\/visual facilities to allow for presentations and conference calls. Also known as conference rooms.",
          "type": "boolean"
        },
        "meetingRoomsException": {
          "description": "Meeting rooms exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "meetingRoomsCount": {
          "description": "Meeting rooms count. The number of meeting rooms at the property.",
          "type": "integer",
          "format": "int32"
        },
        "meetingRoomsCountException": {
          "description": "Meeting rooms count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Accessibility": {
      "id": "Accessibility",
      "description": "Physical adaptations made to the property in consideration of varying levels of human physical ability.",
      "type": "object",
      "properties": {
        "mobilityAccessible": {
          "description": "Mobility accessible. Throughout the property there are physical adaptations to ease the stay of a person in a wheelchair, such as auto-opening doors, wide elevators, wide bathrooms or ramps.",
          "type": "boolean"
        },
        "mobilityAccessibleException": {
          "description": "Mobility accessible exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobilityAccessibleParking": {
          "description": "Mobility accessible parking. The presence of a marked, designated area of prescribed size in which only registered, labeled vehicles transporting a person with physical challenges may park.",
          "type": "boolean"
        },
        "mobilityAccessibleParkingException": {
          "description": "Mobility accessible parking exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobilityAccessibleElevator": {
          "description": "Mobility accessible elevator. A lift that transports people from one level to another and is built to accommodate a wheelchair-using passenger owing to the width of its doors and placement of call buttons.",
          "type": "boolean"
        },
        "mobilityAccessibleElevatorException": {
          "description": "Mobility accessible elevator exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobilityAccessiblePool": {
          "description": "Mobility accessible pool. A swimming pool equipped with a mechanical chair that can be lowered and raised for the purpose of moving physically challenged guests into and out of the pool. May be powered by electricity or water. Also known as pool lift.",
          "type": "boolean"
        },
        "mobilityAccessiblePoolException": {
          "description": "Mobility accessible pool exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Pets": {
      "id": "Pets",
      "description": "Policies regarding guest-owned animals.",
      "type": "object",
      "properties": {
        "petsAllowed": {
          "description": "Pets allowed. Household animals are allowed at the property and in the specific guest room of their owner. May or may not include dogs, cats, reptiles and\/or fish. May or may not require a fee. Service animals are not considered to be pets, so not governed by this policy.",
          "type": "boolean"
        },
        "petsAllowedException": {
          "description": "Pets allowed exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "petsAllowedFree": {
          "description": "Pets allowed free. Household animals are allowed at the property and in the specific guest room of their owner for free. May or may not include dogs, cats, reptiles, and\/or fish.",
          "type": "boolean"
        },
        "petsAllowedFreeException": {
          "description": "Pets allowed free exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "dogsAllowed": {
          "description": "Dogs allowed. Domesticated canines are permitted at the property and allowed to stay in the guest room of their owner. May or may not require a fee.",
          "type": "boolean"
        },
        "dogsAllowedException": {
          "description": "Dogs allowed exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "catsAllowed": {
          "description": "Cats allowed. Domesticated felines are permitted at the property and allowed to stay in the guest room of their owner. May or may not require a fee.",
          "type": "boolean"
        },
        "catsAllowedException": {
          "description": "Cats allowed exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Parking": {
      "id": "Parking",
      "description": "Parking options at the property.",
      "type": "object",
      "properties": {
        "parkingAvailable": {
          "description": "Parking available. The hotel allows the cars of guests to be parked. Can be free or for a fee. Parking facility may be an outdoor lot or an indoor garage, but must be onsite. Nearby parking does not apply. Parking may be performed by the guest or by hotel staff.",
          "type": "boolean"
        },
        "parkingAvailableException": {
          "description": "Parking available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeParking": {
          "description": "Free parking. The hotel allows the cars of guests to be parked for free. Parking facility may be an outdoor lot or an indoor garage, but must be onsite. Nearby parking does not apply. Parking may be performed by the guest or by hotel staff. Free parking must be available to all guests (limited conditions does not apply).",
          "type": "boolean"
        },
        "freeParkingException": {
          "description": "Free parking exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "selfParkingAvailable": {
          "description": "Self parking available. Guests park their own cars. Parking facility may be an outdoor lot or an indoor garage, but must be onsite. Nearby parking does not apply. Can be free or for a fee.",
          "type": "boolean"
        },
        "selfParkingAvailableException": {
          "description": "Self parking available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeSelfParking": {
          "description": "Free self parking. Guests park their own cars for free. Parking facility may be an outdoor lot or an indoor garage, but must be onsite. Nearby parking does not apply.",
          "type": "boolean"
        },
        "freeSelfParkingException": {
          "description": "Free self parking exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "valetParkingAvailable": {
          "description": "Valet parking available. Hotel staff member parks the cars of guests. Parking with this service can be free or for a fee.",
          "type": "boolean"
        },
        "valetParkingAvailableException": {
          "description": "Valet parking available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "freeValetParking": {
          "description": "Free valet parking. Hotel staff member parks the cars of guests. Parking with this service is free.",
          "type": "boolean"
        },
        "freeValetParkingException": {
          "description": "Free valet parking exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "electricCarChargingStations": {
          "description": "Electric car charging stations. Electric power stations, usually located outdoors, into which guests plug their electric cars to receive a charge.",
          "type": "boolean"
        },
        "electricCarChargingStationsException": {
          "description": "Electric car charging stations exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "Housekeeping": {
      "id": "Housekeeping",
      "description": "Conveniences provided in guest units to facilitate an easier, more comfortable stay.",
      "type": "object",
      "properties": {
        "housekeepingAvailable": {
          "description": "Housekeeping available. Guest units are cleaned by hotel staff during guest's stay. Schedule may vary from daily, weekly, or specific days of the week.",
          "type": "boolean"
        },
        "housekeepingAvailableException": {
          "description": "Housekeeping available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "dailyHousekeeping": {
          "description": "Daily housekeeping. Guest units are cleaned by hotel staff daily during guest's stay.",
          "type": "boolean"
        },
        "dailyHousekeepingException": {
          "description": "Daily housekeeping exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "turndownService": {
          "description": "Turndown service. Hotel staff enters guest units to prepare the bed for sleep use. May or may not include some light housekeeping. May or may not include an evening snack or candy. Also known as evening service.",
          "type": "boolean"
        },
        "turndownServiceException": {
          "description": "Turndown service exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "HealthAndSafety": {
      "id": "HealthAndSafety",
      "description": "Health and safety measures implemented by the hotel during COVID-19.",
      "type": "object",
      "properties": {
        "enhancedCleaning": {
          "description": "Enhanced cleaning measures implemented by the hotel during COVID-19.",
          "$ref": "EnhancedCleaning"
        },
        "increasedFoodSafety": {
          "description": "Increased food safety measures implemented by the hotel during COVID-19.",
          "$ref": "IncreasedFoodSafety"
        },
        "minimizedContact": {
          "description": "Minimized contact measures implemented by the hotel during COVID-19.",
          "$ref": "MinimizedContact"
        },
        "personalProtection": {
          "description": "Personal protection measures implemented by the hotel during COVID-19.",
          "$ref": "PersonalProtection"
        },
        "physicalDistancing": {
          "description": "Physical distancing measures implemented by the hotel during COVID-19.",
          "$ref": "PhysicalDistancing"
        }
      }
    },
    "EnhancedCleaning": {
      "id": "EnhancedCleaning",
      "description": "Enhanced cleaning measures implemented by the hotel during COVID-19.",
      "type": "object",
      "properties": {
        "commonAreasEnhancedCleaning": {
          "description": "Enhanced cleaning of common areas.",
          "type": "boolean"
        },
        "commonAreasEnhancedCleaningException": {
          "description": "Common areas enhanced cleaning exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "guestRoomsEnhancedCleaning": {
          "description": "Enhanced cleaning of guest rooms.",
          "type": "boolean"
        },
        "guestRoomsEnhancedCleaningException": {
          "description": "Guest rooms enhanced cleaning exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "commercialGradeDisinfectantCleaning": {
          "description": "Commercial-grade disinfectant used to clean the property.",
          "type": "boolean"
        },
        "commercialGradeDisinfectantCleaningException": {
          "description": "Commercial grade disinfectant cleaning exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "employeesTrainedCleaningProcedures": {
          "description": "Employees trained in COVID-19 cleaning procedures.",
          "type": "boolean"
        },
        "employeesTrainedCleaningProceduresException": {
          "description": "Employees trained cleaning procedures exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "employeesTrainedThoroughHandWashing": {
          "description": "Employees trained in thorough hand-washing.",
          "type": "boolean"
        },
        "employeesTrainedThoroughHandWashingException": {
          "description": "Employees trained thorough hand washing exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "employeesWearProtectiveEquipment": {
          "description": "Employees wear masks, face shields, and\/or gloves.",
          "type": "boolean"
        },
        "employeesWearProtectiveEquipmentException": {
          "description": "Employees wear protective equipment exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "IncreasedFoodSafety": {
      "id": "IncreasedFoodSafety",
      "description": "Increased food safety measures implemented by the hotel during COVID-19.",
      "type": "object",
      "properties": {
        "foodPreparationAndServingAdditionalSafety": {
          "description": "Additional safety measures during food prep and serving.",
          "type": "boolean"
        },
        "foodPreparationAndServingAdditionalSafetyException": {
          "description": "Food preparation and serving additional safety exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "diningAreasAdditionalSanitation": {
          "description": "Additional sanitation in dining areas.",
          "type": "boolean"
        },
        "diningAreasAdditionalSanitationException": {
          "description": "Dining areas additional sanitation exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "individualPackagedMeals": {
          "description": "Individually-packaged meals.",
          "type": "boolean"
        },
        "individualPackagedMealsException": {
          "description": "Individual packaged meals exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "disposableFlatware": {
          "description": "Disposable flatware.",
          "type": "boolean"
        },
        "disposableFlatwareException": {
          "description": "Disposable flatware exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "singleUseFoodMenus": {
          "description": "Single-use menus.",
          "type": "boolean"
        },
        "singleUseFoodMenusException": {
          "description": "Single use food menus exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "MinimizedContact": {
      "id": "MinimizedContact",
      "description": "Minimized contact measures implemented by the hotel during COVID-19.",
      "type": "object",
      "properties": {
        "noHighTouchItemsCommonAreas": {
          "description": "High-touch items, such as magazines, removed from common areas.",
          "type": "boolean"
        },
        "noHighTouchItemsCommonAreasException": {
          "description": "No high touch items common areas exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "noHighTouchItemsGuestRooms": {
          "description": "High-touch items, such as decorative pillows, removed from guest rooms.",
          "type": "boolean"
        },
        "noHighTouchItemsGuestRoomsException": {
          "description": "No high touch items guest rooms exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "digitalGuestRoomKeys": {
          "description": "Keyless mobile entry to guest rooms.",
          "type": "boolean"
        },
        "digitalGuestRoomKeysException": {
          "description": "Digital guest room keys exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "plasticKeycardsDisinfected": {
          "description": "Plastic key cards are disinfected or discarded.",
          "type": "boolean"
        },
        "plasticKeycardsDisinfectedException": {
          "description": "Plastic keycards disinfected exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "roomBookingsBuffer": {
          "description": "Buffer maintained between room bookings.",
          "type": "boolean"
        },
        "roomBookingsBufferException": {
          "description": "Room bookings buffer exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "housekeepingScheduledRequestOnly": {
          "description": "Housekeeping scheduled by request only.",
          "type": "boolean"
        },
        "housekeepingScheduledRequestOnlyException": {
          "description": "Housekeeping scheduled request only exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "contactlessCheckinCheckout": {
          "description": "No-contact check-in and check-out.",
          "type": "boolean"
        },
        "contactlessCheckinCheckoutException": {
          "description": "Contactless check-in check-out exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "PersonalProtection": {
      "id": "PersonalProtection",
      "description": "Personal protection measures implemented by the hotel during COVID-19.",
      "type": "object",
      "properties": {
        "commonAreasOfferSanitizingItems": {
          "description": "Hand-sanitizer and\/or sanitizing wipes are offered in common areas.",
          "type": "boolean"
        },
        "commonAreasOfferSanitizingItemsException": {
          "description": "Common areas offer sanitizing items exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "guestRoomHygieneKitsAvailable": {
          "description": "In-room hygiene kits with masks, hand sanitizer, and\/or antibacterial wipes.",
          "type": "boolean"
        },
        "guestRoomHygieneKitsAvailableException": {
          "description": "Guest room hygiene kits available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "protectiveEquipmentAvailable": {
          "description": "Masks and\/or gloves available for guests.",
          "type": "boolean"
        },
        "protectiveEquipmentAvailableException": {
          "description": "Protective equipment available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "faceMaskRequired": {
          "description": "Masks required on the property.",
          "type": "boolean"
        },
        "faceMaskRequiredException": {
          "description": "Face mask required exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "PhysicalDistancing": {
      "id": "PhysicalDistancing",
      "description": "Physical distancing measures implemented by the hotel during COVID-19.",
      "type": "object",
      "properties": {
        "physicalDistancingRequired": {
          "description": "Physical distancing required.",
          "type": "boolean"
        },
        "physicalDistancingRequiredException": {
          "description": "Physical distancing required exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "safetyDividers": {
          "description": "Safety dividers at front desk and other locations.",
          "type": "boolean"
        },
        "safetyDividersException": {
          "description": "Safety dividers exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "sharedAreasLimitedOccupancy": {
          "description": "Guest occupancy limited within shared facilities.",
          "type": "boolean"
        },
        "sharedAreasLimitedOccupancyException": {
          "description": "Shared areas limited occupancy exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "wellnessAreasHavePrivateSpaces": {
          "description": "Private spaces designated in spa and wellness areas.",
          "type": "boolean"
        },
        "wellnessAreasHavePrivateSpacesException": {
          "description": "Wellness areas have private spaces exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "commonAreasPhysicalDistancingArranged": {
          "description": "Common areas arranged to maintain physical distancing.",
          "type": "boolean"
        },
        "commonAreasPhysicalDistancingArrangedException": {
          "description": "Common areas physical distancing arranged exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "LivingArea": {
      "id": "LivingArea",
      "description": "An individual room, such as kitchen, bathroom, bedroom, within a bookable guest unit.",
      "type": "object",
      "properties": {
        "layout": {
          "description": "Information about the layout of the living area.",
          "$ref": "LivingAreaLayout"
        },
        "features": {
          "description": "Features in the living area.",
          "$ref": "LivingAreaFeatures"
        },
        "eating": {
          "description": "Information about eating features in the living area.",
          "$ref": "LivingAreaEating"
        },
        "sleeping": {
          "description": "Information about sleeping features in the living area.",
          "$ref": "LivingAreaSleeping"
        },
        "accessibility": {
          "description": "Accessibility features of the living area.",
          "$ref": "LivingAreaAccessibility"
        }
      }
    },
    "LivingAreaLayout": {
      "id": "LivingAreaLayout",
      "description": "Information about the layout of the living area.",
      "type": "object",
      "properties": {
        "livingAreaSqMeters": {
          "description": "Living area sq meters. The measurement in meters of the area of a guestroom's living space.",
          "type": "number",
          "format": "float"
        },
        "livingAreaSqMetersException": {
          "description": "Living area sq meters exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "stairs": {
          "description": "Stairs. There are steps leading from one level or story to another in the unit.",
          "type": "boolean"
        },
        "stairsException": {
          "description": "Stairs exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "loft": {
          "description": "Loft. A three-walled upper area accessed by stairs or a ladder that overlooks the lower area of a room.",
          "type": "boolean"
        },
        "loftException": {
          "description": "Loft exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "nonSmoking": {
          "description": "Non smoking. A guestroom in which the smoking of cigarettes, cigars and pipes is prohibited.",
          "type": "boolean"
        },
        "nonSmokingException": {
          "description": "Non smoking exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "patio": {
          "description": "Patio. A paved, outdoor area with seating attached to and accessed through a ground-floor guestroom for use by the occupants of the guestroom.",
          "type": "boolean"
        },
        "patioException": {
          "description": "Patio exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "balcony": {
          "description": "Balcony. An outdoor platform attached to a building and surrounded by a short wall, fence or other safety railing. The balcony is accessed through a door in a guestroom or suite and is for use by the guest staying in that room. May or may not include seating or outdoor furniture. Is not located on the ground floor. Also lanai.",
          "type": "boolean"
        },
        "balconyException": {
          "description": "Balcony exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "LivingAreaFeatures": {
      "id": "LivingAreaFeatures",
      "description": "Features in the living area.",
      "type": "object",
      "properties": {
        "privateBathroom": {
          "description": "Private bathroom. A bathroom designated for the express use of the guests staying in a specific guestroom.",
          "type": "boolean"
        },
        "privateBathroomException": {
          "description": "Private bathroom exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "toilet": {
          "description": "Toilet. A fixed bathroom feature connected to a sewer or septic system and consisting of a water-flushed bowl with a seat, as well as a device that elicites the water-flushing action. Used for the process and disposal of human waste.",
          "type": "boolean"
        },
        "toiletException": {
          "description": "Toilet exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "bidet": {
          "description": "Bidet. A plumbing fixture attached to a toilet or a low, fixed sink designed for the purpose of washing after toilet use.",
          "type": "boolean"
        },
        "bidetException": {
          "description": "Bidet exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "shower": {
          "description": "Shower. A fixed plumbing fixture for standing bathing that features a tall spray spout or faucet through which water flows, a knob or knobs that control the water's temperature, and a drain in the floor.",
          "type": "boolean"
        },
        "showerException": {
          "description": "Shower exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "bathtub": {
          "description": "Bathtub. A fixed plumbing feature set on the floor and consisting of a large container that accommodates the body of an adult for the purpose of seated bathing. Includes knobs or fixtures to control the temperature of the water, a faucet through which the water flows, and a drain that can be closed for filling and opened for draining.",
          "type": "boolean"
        },
        "bathtubException": {
          "description": "Bathtub exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hairdryer": {
          "description": "Hairdryer. A handheld electric appliance that blows temperature-controlled air for the purpose of drying wet hair. Can be mounted to a bathroom wall or a freestanding device stored in the guestroom's bathroom or closet.",
          "type": "boolean"
        },
        "hairdryerException": {
          "description": "Hairdryer exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "washer": {
          "description": "Washer. An electrical machine connected to a running water source designed to launder clothing.",
          "type": "boolean"
        },
        "washerException": {
          "description": "Washer exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "dryer": {
          "description": "Dryer. An electrical machine designed to dry clothing.",
          "type": "boolean"
        },
        "dryerException": {
          "description": "Dryer exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "ironingEquipment": {
          "description": "Ironing equipment. A device, usually with a flat metal base, that is heated to smooth, finish, or press clothes and a flat, padded, cloth-covered surface on which the clothes are worked.",
          "type": "boolean"
        },
        "ironingEquipmentException": {
          "description": "Ironing equipment exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "universalPowerAdapters": {
          "description": "Universal power adapters. A power supply for electronic devices which plugs into a wall for the purpose of converting AC to a single DC voltage. Also know as AC adapter or charger.",
          "type": "boolean"
        },
        "universalPowerAdaptersException": {
          "description": "Universal power adapters exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "airConditioning": {
          "description": "Air conditioning. An electrical machine used to cool the temperature of the guestroom.",
          "type": "boolean"
        },
        "airConditioningException": {
          "description": "Air conditioning exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "heating": {
          "description": "Heating. An electrical machine used to warm the temperature of the guestroom.",
          "type": "boolean"
        },
        "heatingException": {
          "description": "Heating exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "fireplace": {
          "description": "Fireplace. A framed opening (aka hearth) at the base of a chimney in which logs or an electrical fire feature are burned to provide a relaxing ambiance or to heat the room. Often made of bricks or stone.",
          "type": "boolean"
        },
        "fireplaceException": {
          "description": "Fireplace exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "tv": {
          "description": "TV. A television is available in the guestroom.",
          "type": "boolean"
        },
        "tvException": {
          "description": "TV exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "tvCasting": {
          "description": "TV casting. A television equipped with a device through which the video entertainment accessed on a personal computer, phone or tablet can be wirelessly delivered to and viewed on the guestroom's television.",
          "type": "boolean"
        },
        "tvCastingException": {
          "description": "TV exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "tvStreaming": {
          "description": "TV streaming. Televisions that embed a range of web-based apps to allow for watching media from those apps.",
          "type": "boolean"
        },
        "tvStreamingException": {
          "description": "TV streaming exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "payPerViewMovies": {
          "description": "Pay per view movies. Televisions with channels that offer films that can be viewed for a fee, and have an interface to allow the viewer to accept the terms and approve payment.",
          "type": "boolean"
        },
        "payPerViewMoviesException": {
          "description": "Pay per view movies exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "inunitSafe": {
          "description": "In-unit safe. A strong fireproof cabinet with a programmable lock, used for the protected storage of valuables in a guestroom. Often built into a closet.",
          "type": "boolean"
        },
        "inunitSafeException": {
          "description": "In-unit safe exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "electronicRoomKey": {
          "description": "Electronic room key. A card coded by the check-in computer that is read by the lock on the hotel guestroom door to allow for entry.",
          "type": "boolean"
        },
        "electronicRoomKeyException": {
          "description": "Electronic room key exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "inunitWifiAvailable": {
          "description": "In-unit Wifi available. Guests can wirelessly connect to the Internet in the guestroom. Can be free or for a fee.",
          "type": "boolean"
        },
        "inunitWifiAvailableException": {
          "description": "In-unit Wifi available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "LivingAreaEating": {
      "id": "LivingAreaEating",
      "description": "Information about eating features in the living area.",
      "type": "object",
      "properties": {
        "kitchenAvailable": {
          "description": "Kitchen available. An area of the guestroom designated for the preparation and storage of food via the presence of a refrigerator, cook top, oven and sink, as well as cutlery, dishes and cookware. Usually includes small appliances such a coffee maker and a microwave. May or may not include an automatic dishwasher.",
          "type": "boolean"
        },
        "kitchenAvailableException": {
          "description": "Kitchen available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "refrigerator": {
          "description": "Refrigerator. A large, climate-controlled electrical cabinet with vertical doors. Built for the purpose of chilling and storing perishable foods.",
          "type": "boolean"
        },
        "refrigeratorException": {
          "description": "Refrigerator exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "dishwasher": {
          "description": "Dishwasher. A counter-height electrical cabinet containing racks for dirty dishware, cookware and cutlery, and a dispenser for soap built into the pull-down door. The cabinet is attached to the plumbing system to facilitate the automatic cleaning of its contents.",
          "type": "boolean"
        },
        "dishwasherException": {
          "description": "Dishwasher exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "stove": {
          "description": "Stove. A kitchen appliance powered by gas or electricity for the purpose of creating a flame or hot surface on which pots of food can be cooked. Also known as cooktop or hob.",
          "type": "boolean"
        },
        "stoveException": {
          "description": "Stove exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "oven": {
          "description": "Oven. A temperature controlled, heated metal cabinet powered by gas or electricity in which food is placed for the purpose of cooking or reheating.",
          "type": "boolean"
        },
        "ovenException": {
          "description": "Oven exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "cookware": {
          "description": "Cookware. Kitchen pots, pans and utensils used in connection with the preparation of food.",
          "type": "boolean"
        },
        "cookwareException": {
          "description": "Cookware exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "sink": {
          "description": "Sink. A basin with a faucet attached to a water source and used for the purpose of washing and rinsing.",
          "type": "boolean"
        },
        "sinkException": {
          "description": "Sink exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "microwave": {
          "description": "Microwave. An electric oven that quickly cooks and heats food by microwave energy. Smaller than a standing or wall mounted oven. Usually placed on a kitchen counter, a shelf or tabletop or mounted above a cooktop.",
          "type": "boolean"
        },
        "microwaveException": {
          "description": "Microwave exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "toaster": {
          "description": "Toaster. A small, temperature controlled electric appliance with rectangular slots at the top that are lined with heated coils for the purpose of browning slices of bread products.",
          "type": "boolean"
        },
        "toasterException": {
          "description": "Toaster exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "indoorGrill": {
          "description": "Indoor grill. Metal grates built into an indoor cooktop on which food is cooked over an open flame or electric heat source.",
          "type": "boolean"
        },
        "indoorGrillException": {
          "description": "Indoor grill exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "outdoorGrill": {
          "description": "Outdoor grill. Metal grates on which food is cooked over an open flame or electric heat source. Part of an outdoor apparatus that supports the grates. Also known as barbecue grill or barbecue.",
          "type": "boolean"
        },
        "outdoorGrillException": {
          "description": "Outdoor grill exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "minibar": {
          "description": "Minibar. A small refrigerated cabinet in the guestroom containing bottles\/cans of soft drinks, mini bottles of alcohol, and snacks. The items are most commonly available for a fee.",
          "type": "boolean"
        },
        "minibarException": {
          "description": "Minibar exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "snackbar": {
          "description": "Snackbar. A small cabinet in the guestroom containing snacks. The items are most commonly available for a fee.",
          "type": "boolean"
        },
        "snackbarException": {
          "description": "Snackbar exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "coffeeMaker": {
          "description": "Coffee maker. An electric appliance that brews coffee by heating and forcing water through ground coffee.",
          "type": "boolean"
        },
        "coffeeMakerException": {
          "description": "Coffee maker exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "kettle": {
          "description": "Kettle. A covered container with a handle and a spout used for boiling water.",
          "type": "boolean"
        },
        "kettleException": {
          "description": "Kettle exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "teaStation": {
          "description": "Tea station. A small area with the supplies needed to heat water and make tea.",
          "type": "boolean"
        },
        "teaStationException": {
          "description": "Tea station exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "LivingAreaSleeping": {
      "id": "LivingAreaSleeping",
      "description": "Information about sleeping features in the living area.",
      "type": "object",
      "properties": {
        "bedsCount": {
          "description": "Beds count. The number of permanent beds present in a guestroom. Does not include rollaway beds, cribs or sofabeds.",
          "type": "integer",
          "format": "int32"
        },
        "bedsCountException": {
          "description": "Beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "kingBedsCount": {
          "description": "King beds count. The number of large beds measuring 76\"W x 80\"L (193cm x 102cm). Most often meant to accompany two people. Includes California king and super king.",
          "type": "integer",
          "format": "int32"
        },
        "kingBedsCountException": {
          "description": "King beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "queenBedsCount": {
          "description": "Queen beds count. The number of medium-large beds measuring 60\"W x 80\"L (152cm x 102cm).",
          "type": "integer",
          "format": "int32"
        },
        "queenBedsCountException": {
          "description": "Queen beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "doubleBedsCount": {
          "description": "Double beds count. The number of medium beds measuring 53\"W x 75\"L (135cm x 191cm). Also known as full size bed.",
          "type": "integer",
          "format": "int32"
        },
        "doubleBedsCountException": {
          "description": "Double beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "singleOrTwinBedsCount": {
          "description": "Single or twin count beds. The number of smaller beds measuring 38\"W x 75\"L (97cm x 191cm) that can accommodate one adult.",
          "type": "integer",
          "format": "int32"
        },
        "singleOrTwinBedsCountException": {
          "description": "Single or twin beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "sofaBedsCount": {
          "description": "Sofa beds count. The number of specially designed sofas that can be made to serve as a bed by lowering its hinged upholstered back to horizontal position or by pulling out a concealed mattress.",
          "type": "integer",
          "format": "int32"
        },
        "sofaBedsCountException": {
          "description": "Sofa beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "bunkBedsCount": {
          "description": "Bunk beds count. The number of furniture pieces in which one framed mattress is fixed directly above another by means of a physical frame. This allows one person(s) to sleep in the bottom bunk and one person(s) to sleep in the top bunk. Also known as double decker bed.",
          "type": "integer",
          "format": "int32"
        },
        "bunkBedsCountException": {
          "description": "Bunk beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "otherBedsCount": {
          "description": "Other beds count. The number of beds that are not standard mattress and boxspring setups such as Japanese tatami mats, trundle beds, air mattresses and cots.",
          "type": "integer",
          "format": "int32"
        },
        "otherBedsCountException": {
          "description": "Other beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "rollAwayBedsCount": {
          "description": "Roll away beds count. The number of mattresses on wheeled frames that can be folded in half and rolled away for easy storage that the guestroom can obtain upon request.",
          "type": "integer",
          "format": "int32"
        },
        "rollAwayBedsCountException": {
          "description": "Roll away beds count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "cribsCount": {
          "description": "Cribs count. The number of small beds for an infant or toddler that the guestroom can obtain. The bed is surrounded by a high railing to prevent the child from falling or climbing out of the bed",
          "type": "integer",
          "format": "int32"
        },
        "cribsCountException": {
          "description": "Cribs count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hypoallergenicBedding": {
          "description": "Hypoallergenic bedding. Bedding such as linens, pillows, mattress covers and\/or mattresses that are made of materials known to be resistant to allergens such as mold, dust and dander.",
          "type": "boolean"
        },
        "hypoallergenicBeddingException": {
          "description": "Hypoallergenic bedding exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "syntheticPillows": {
          "description": "Synthetic pillows. The option for guests to obtain bed pillows stuffed with polyester material crafted to reproduce the feel of a pillow stuffed with down and feathers.",
          "type": "boolean"
        },
        "syntheticPillowsException": {
          "description": "Synthetic pillows exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "memoryFoamPillows": {
          "description": "Memory foam pillows. The option for guests to obtain bed pillows that are stuffed with a man-made foam that responds to body heat by conforming to the body closely, and then recovers its shape when the pillow cools down.",
          "type": "boolean"
        },
        "memoryFoamPillowsException": {
          "description": "Memory foam pillows exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "featherPillows": {
          "description": "Feather pillows. The option for guests to obtain bed pillows that are stuffed with the feathers and down of ducks or geese.",
          "type": "boolean"
        },
        "featherPillowsException": {
          "description": "Feather pillows exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "LivingAreaAccessibility": {
      "id": "LivingAreaAccessibility",
      "description": "Accessibility features of the living area.",
      "type": "object",
      "properties": {
        "mobilityAccessibleUnit": {
          "description": "Mobility-accessible unit. A guestroom designed to accommodate the physical challenges of a guest with mobility and\/or auditory and\/or visual issues. Usually features enlarged doorways, roll-in showers with seats, bathroom grab bars, and communication equipment for the hearing and sight challenged.",
          "type": "boolean"
        },
        "mobilityAccessibleUnitException": {
          "description": "Mobility-accessible unit exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "adaCompliantUnit": {
          "description": "ADA compliant unit. A guestroom designed to accommodate the physical challenges of a guest with mobility and\/or auditory and\/or visual issues, as determined by legislative policy. Usually features enlarged doorways, roll-in showers with seats, bathroom grab bars, and communication equipment for the hearing and sight challenged.",
          "type": "boolean"
        },
        "adaCompliantUnitException": {
          "description": "ADA compliant unit exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hearingAccessibleUnit": {
          "description": "Hearing-accessible unit. A guestroom designed to accommodate the physical challenges of a guest with auditory issues.",
          "type": "boolean"
        },
        "hearingAccessibleUnitException": {
          "description": "Hearing-accessible unit exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobilityAccessibleShower": {
          "description": "Mobility-accessible shower. A shower with an enlarged door or access point to accommodate a wheelchair or a waterproof seat for the physically challenged.",
          "type": "boolean"
        },
        "mobilityAccessibleShowerException": {
          "description": "Mobility-accessible shower exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobilityAccessibleBathtub": {
          "description": "Mobility-accessible bathtub. A bathtub that accomodates the physically challenged with additional railings or hand grips, a transfer seat or lift, and\/or a door to enable walking into the tub.",
          "type": "boolean"
        },
        "mobilityAccessibleBathtubException": {
          "description": "Mobility-accessible bathtub exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "mobilityAccessibleToilet": {
          "description": "Mobility-accessible toilet. A toilet with a higher seat, grab bars, and\/or a larger area around it to accommodate the physically challenged.",
          "type": "boolean"
        },
        "mobilityAccessibleToiletException": {
          "description": "Mobility-accessible toilet exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hearingAccessibleDoorbell": {
          "description": "Hearing-accessible doorbell. A visual indicator(s) of a knock or ring at the door.",
          "type": "boolean"
        },
        "hearingAccessibleDoorbellException": {
          "description": "Hearing-accessible doorbell exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "hearingAccessibleFireAlarm": {
          "description": "Hearing-accessible fire alarm. A device that gives warning of a fire through flashing lights.",
          "type": "boolean"
        },
        "hearingAccessibleFireAlarmException": {
          "description": "Hearing-accessible fire alarm exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "GuestUnitFeatures": {
      "id": "GuestUnitFeatures",
      "description": "Features and available amenities in the guest unit.",
      "type": "object",
      "properties": {
        "tier": {
          "description": "Tier. Classification of the unit based on available features\/amenities. A non-standard tier is only permitted if at least one other unit type falls under the standard tier.",
          "type": "string",
          "enumDescriptions": [
            "Default tier. Equivalent to STANDARD. Prefer using STANDARD directly.",
            "Standard unit. The predominant and most basic guestroom type available at the hotel. All other guestroom types include the features\/amenities of this room, as well as additional features\/amenities.",
            "Deluxe unit. A guestroom type that builds on the features of the standard guestroom by offering additional amenities and\/or more space, and\/or views. The room rate is higher than that of the standard room type. Also known as Superior. Only allowed if another unit type is a standard tier."
          ],
          "enum": [
            "UNIT_TIER_UNSPECIFIED",
            "STANDARD_UNIT",
            "DELUXE_UNIT"
          ]
        },
        "tierException": {
          "description": "Tier exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "maxOccupantsCount": {
          "description": "Max occupants count. The total number of guests allowed to stay overnight in the guestroom.",
          "type": "integer",
          "format": "int32"
        },
        "maxOccupantsCountException": {
          "description": "Max occupants count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "maxAdultOccupantsCount": {
          "description": "Max adult occupants count. The total number of adult guests allowed to stay overnight in the guestroom.",
          "type": "integer",
          "format": "int32"
        },
        "maxAdultOccupantsCountException": {
          "description": "Max adult occupants count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "maxChildOccupantsCount": {
          "description": "Max child occupants count. The total number of children allowed to stay overnight in the room.",
          "type": "integer",
          "format": "int32"
        },
        "maxChildOccupantsCountException": {
          "description": "Max child occupants count exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "privateHome": {
          "description": "Private home. A privately owned home (house, townhouse, apartment, cabin, bungalow etc) that may or not serve as the owner's residence, but is rented out in its entirety or by the room(s) to paying guest(s) for vacation stays. Not for lease-based, long-term residency.",
          "type": "boolean"
        },
        "privateHomeException": {
          "description": "Private home exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "suite": {
          "description": "Suite. A guestroom category that implies both a bedroom area and a separate living area. There may or may not be full walls and doors separating the two areas, but regardless, they are very distinct. Does not mean a couch or chair in a bedroom.",
          "type": "boolean"
        },
        "suiteException": {
          "description": "Suite exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "bungalowOrVilla": {
          "description": "Bungalow or villa. An independent structure that is part of a hotel or resort that is rented to one party for a vacation stay. The hotel or resort may be completely comprised of bungalows or villas, or they may be one of several guestroom options. Guests in the bungalows or villas most often have the same, if not more, amenities and services offered to guests in other guestroom types.",
          "type": "boolean"
        },
        "bungalowOrVillaException": {
          "description": "Bungalow or villa exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "executiveFloor": {
          "description": "Executive floor. A floor of the hotel where the guestrooms are only bookable by members of the hotel's frequent guest membership program. Benefits of this room class include access to a designated lounge which may or may not feature free breakfast, cocktails or other perks specific to members of the program.",
          "type": "boolean"
        },
        "executiveFloorException": {
          "description": "Executive floor exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "connectingUnitAvailable": {
          "description": "Connecting unit available. A guestroom type that features access to an adjacent guestroom for the purpose of booking both rooms. Most often used by families who need more than one room to accommodate the number of people in their group.",
          "type": "boolean"
        },
        "connectingUnitAvailableException": {
          "description": "Connecting unit available exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "views": {
          "description": "Views available from the guest unit itself.",
          "$ref": "ViewsFromUnit"
        },
        "totalLivingAreas": {
          "description": "Features available in the living areas in the guest unit.",
          "$ref": "LivingArea"
        }
      }
    },
    "ViewsFromUnit": {
      "id": "ViewsFromUnit",
      "description": "Views available from the guest unit itself.",
      "type": "object",
      "properties": {
        "beachView": {
          "description": "Beach view. A guestroom that features a window through which guests can see the beach.",
          "type": "boolean"
        },
        "beachViewException": {
          "description": "Beach view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "cityView": {
          "description": "City view. A guestroom that features a window through which guests can see the buildings, parks and\/or streets of the city.",
          "type": "boolean"
        },
        "cityViewException": {
          "description": "City view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "gardenView": {
          "description": "Garden view. A guestroom that features a window through which guests can see a garden.",
          "type": "boolean"
        },
        "gardenViewException": {
          "description": "Garden view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "lakeView": {
          "description": "Lake view.",
          "type": "boolean"
        },
        "lakeViewException": {
          "description": "Lake view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "landmarkView": {
          "description": "Landmark view. A guestroom that features a window through which guests can see a landmark such as the countryside, a golf course, the forest, a park, a rain forst, a mountain or a slope.",
          "type": "boolean"
        },
        "landmarkViewException": {
          "description": "Landmark view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "oceanView": {
          "description": "Ocean view. A guestroom that features a window through which guests can see the ocean.",
          "type": "boolean"
        },
        "oceanViewException": {
          "description": "Ocean view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "poolView": {
          "description": "Pool view. A guestroom that features a window through which guests can see the hotel's swimming pool.",
          "type": "boolean"
        },
        "poolViewException": {
          "description": "Pool view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        },
        "valleyView": {
          "description": "Valley view. A guestroom that features a window through which guests can see over a valley.",
          "type": "boolean"
        },
        "valleyViewException": {
          "description": "Valley view exception.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified exception. Use this only if a more specific exception does not match.",
            "Amenity or service is unavailable due to ongoing work orders.",
            "Amenity or service availability is seasonal.",
            "Amenity or service availability depends on the day of the week."
          ],
          "enum": [
            "EXCEPTION_UNSPECIFIED",
            "UNDER_CONSTRUCTION",
            "DEPENDENT_ON_SEASON",
            "DEPENDENT_ON_DAY_OF_WEEK"
          ]
        }
      }
    },
    "GuestUnitType": {
      "id": "GuestUnitType",
      "description": "A specific type of unit primarily defined by its features.",
      "type": "object",
      "properties": {
        "codes": {
          "description": "Required. Unit or room code identifiers for a single GuestUnitType. Each code must be unique within a Lodging instance.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "label": {
          "description": "Required. Short, English label or name of the GuestUnitType. Target <50 chars.",
          "type": "string"
        },
        "features": {
          "description": "Features and available amenities of the GuestUnitType.",
          "$ref": "GuestUnitFeatures"
        }
      }
    },
    "GetGoogleUpdatedLodgingResponse": {
      "id": "GetGoogleUpdatedLodgingResponse",
      "description": "Response message for LodgingService.GetGoogleUpdatedLodging",
      "type": "object",
      "properties": {
        "lodging": {
          "description": "Required. The Google updated Lodging.",
          "$ref": "Lodging"
        },
        "diffMask": {
          "description": "Required. The fields in the Lodging that have been updated by Google. Repeated field items are not individually specified.",
          "type": "string",
          "format": "google-fieldmask"
        }
      }
    },
    "ListMediaItemsResponse": {
      "id": "ListMediaItemsResponse",
      "description": "Response message for Media.ListMediaItems.",
      "type": "object",
      "properties": {
        "mediaItems": {
          "description": "The returned list of media items.",
          "type": "array",
          "items": {
            "$ref": "MediaItem"
          }
        },
        "totalMediaItemCount": {
          "description": "The total number of media items for this location, irrespective of pagination.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "If there are more media items than the requested page size, then this field is populated with a token to fetch the next page of media items on a subsequent call to ListMediaItems.",
          "type": "string"
        }
      }
    },
    "ListCustomerMediaItemsResponse": {
      "id": "ListCustomerMediaItemsResponse",
      "description": "Response message for Media.ListCustomerMediaItems.",
      "type": "object",
      "properties": {
        "mediaItems": {
          "description": "The returned list of media items.",
          "type": "array",
          "items": {
            "$ref": "MediaItem"
          }
        },
        "totalMediaItemCount": {
          "description": "The total number of media items for this location, irrespective of pagination. This number is approximate, particularly when there are multiple pages of results.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "If there are more media items than the requested page size, then this field is populated with a token to fetch the next page of media items on a subsequent call to ListCustomerMediaItems.",
          "type": "string"
        }
      }
    },
    "StartUploadMediaItemDataRequest": {
      "id": "StartUploadMediaItemDataRequest",
      "description": "Request message for Media.StartUploadMediaItemData.",
      "type": "object",
      "properties": {
      }
    },
    "ListQuestionsResponse": {
      "id": "ListQuestionsResponse",
      "description": "Response message for QuestionsAndAnswers.ListQuestions",
      "type": "object",
      "properties": {
        "questions": {
          "description": "The requested questions,",
          "type": "array",
          "items": {
            "$ref": "Question"
          }
        },
        "totalSize": {
          "description": "The total number of questions posted for this location across all pages.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "If the number of questions exceeds the requested max page size, this field is populated with a token to fetch the next page of questions on a subsequent call. If there are no more questions, this field is not present in the response.",
          "type": "string"
        }
      }
    },
    "Question": {
      "id": "Question",
      "description": "Represents a single question and some of its answers.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. The unique name for the question. accounts\/*\/locations\/*\/questions\/*",
          "type": "string"
        },
        "author": {
          "description": "Output only. The author of the question.",
          "$ref": "Author"
        },
        "upvoteCount": {
          "description": "Output only. The number of upvotes for the question.",
          "type": "integer",
          "format": "int32"
        },
        "text": {
          "description": "The text of the question. It should contain at least three words and the total length should be greater than or equal to 10 characters. The maximum length is 4096 characters.",
          "type": "string"
        },
        "createTime": {
          "description": "Output only. The timestamp for when the question was written.",
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. The timestamp for when the question was last modified.",
          "type": "string",
          "format": "google-datetime"
        },
        "topAnswers": {
          "description": "Output only. A list of answers to the question, sorted by upvotes. This may not be a complete list of answers depending on the request parameters (answers_per_question)",
          "type": "array",
          "items": {
            "$ref": "Answer"
          }
        },
        "totalAnswerCount": {
          "description": "Output only. The total number of answers posted for this question.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "Author": {
      "id": "Author",
      "description": "Represents the author of a question or answer",
      "type": "object",
      "properties": {
        "displayName": {
          "description": "The display name of the user",
          "type": "string"
        },
        "profilePhotoUrl": {
          "description": "The profile photo URL of the user.",
          "type": "string"
        },
        "type": {
          "description": "The type of user the author is.",
          "type": "string",
          "enumDescriptions": [
            "This should not be used.",
            "A regular user.",
            "A Local Guide",
            "The owner\/manager of the location"
          ],
          "enum": [
            "AUTHOR_TYPE_UNSPECIFIED",
            "REGULAR_USER",
            "LOCAL_GUIDE",
            "MERCHANT"
          ]
        }
      }
    },
    "Answer": {
      "id": "Answer",
      "description": "Represents an answer to a question",
      "type": "object",
      "properties": {
        "name": {
          "description": "Output only. The unique name for the answer accounts\/*\/locations\/*\/questions\/*\/answers\/*",
          "type": "string"
        },
        "author": {
          "description": "Output only. The author of the answer.",
          "$ref": "Author"
        },
        "upvoteCount": {
          "description": "Output only. The number of upvotes for the answer.",
          "type": "integer",
          "format": "int32"
        },
        "text": {
          "description": "The text of the answer. It should contain at least one non-whitespace character. The maximum length is 4096 characters.",
          "type": "string"
        },
        "createTime": {
          "description": "Output only. The timestamp for when the answer was written.",
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "Output only. The timestamp for when the answer was last modified.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "ListAnswersResponse": {
      "id": "ListAnswersResponse",
      "description": "Response message for QuestionsAndAnswers.ListAnswers",
      "type": "object",
      "properties": {
        "answers": {
          "description": "The requested answers.",
          "type": "array",
          "items": {
            "$ref": "Answer"
          }
        },
        "totalSize": {
          "description": "The total number of answers posted for this question across all pages.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "If the number of answers exceeds the requested max page size, this field is populated with a token to fetch the next page of answers on a subsequent call. If there are no more answers, this field is not present in the response.",
          "type": "string"
        }
      }
    },
    "UpsertAnswerRequest": {
      "id": "UpsertAnswerRequest",
      "description": "Request message for QuestionsAndAnswers.UpsertAnswer",
      "type": "object",
      "properties": {
        "answer": {
          "description": "The new answer.",
          "$ref": "Answer"
        }
      }
    },
    "BatchGetReviewsRequest": {
      "id": "BatchGetReviewsRequest",
      "description": "Request message for Reviews.BatchGetReviews.",
      "type": "object",
      "properties": {
        "locationNames": {
          "description": "A collection of locations to fetch reviews for, specified by their names.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pageSize": {
          "description": "How many reviews to fetch per page. The default value is 200.",
          "type": "integer",
          "format": "int32"
        },
        "pageToken": {
          "description": "If specified, it fetches the next page of reviews.",
          "type": "string"
        },
        "orderBy": {
          "description": "Optional. Specifies the field to sort reviews by. If unspecified, the order of reviews returned will default to `update_time desc`. Valid orders to sort by are `rating`, `rating desc` and `update_time desc`. `rating` will return reviews in ascending order. `update_time`(i.e. ascending order) is not supported.",
          "type": "string"
        },
        "ignoreRatingOnlyReviews": {
          "description": "Whether to ignore rating-only reviews.",
          "type": "boolean"
        }
      }
    },
    "BatchGetReviewsResponse": {
      "id": "BatchGetReviewsResponse",
      "description": "Response message for Reviews.BatchGetReviews.",
      "type": "object",
      "properties": {
        "locationReviews": {
          "description": "Reviews with location information.",
          "type": "array",
          "items": {
            "$ref": "LocationReview"
          }
        },
        "nextPageToken": {
          "description": "If the number of reviews exceeded the requested page size, this field is populated with a token to fetch the next page of reviews on a subsequent calls. If there are no more reviews, this field will not be present in the response.",
          "type": "string"
        }
      }
    },
    "LocationReview": {
      "id": "LocationReview",
      "description": "Represents a review with location information.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Location resource name.",
          "type": "string"
        },
        "review": {
          "description": "A review for the location.",
          "$ref": "Review"
        }
      }
    },
    "Review": {
      "id": "Review",
      "description": "Output only. Represents a review for a location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "The resource name. For Review it is of the form `accounts\/{account_id}\/locations\/{location_id}\/reviews\/{review_id}`",
          "type": "string"
        },
        "reviewId": {
          "description": "The encrypted unique identifier.",
          "type": "string"
        },
        "reviewer": {
          "description": "The author of the review.",
          "$ref": "Reviewer"
        },
        "starRating": {
          "description": "The star rating of the review.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "One star out of a maximum of five.",
            "Two stars out of a maximum of five.",
            "Three stars out of a maximum of five.",
            "Four stars out of a maximum of five.",
            "The maximum star rating."
          ],
          "enum": [
            "STAR_RATING_UNSPECIFIED",
            "ONE",
            "TWO",
            "THREE",
            "FOUR",
            "FIVE"
          ]
        },
        "comment": {
          "description": "The body of the review as plain text with markups.",
          "type": "string"
        },
        "createTime": {
          "description": "The timestamp for when the review was written.",
          "type": "string",
          "format": "google-datetime"
        },
        "updateTime": {
          "description": "The timestamp for when the review was last modified.",
          "type": "string",
          "format": "google-datetime"
        },
        "reviewReply": {
          "description": "The owner\/manager of this location's reply to this review.",
          "$ref": "ReviewReply"
        }
      }
    },
    "Reviewer": {
      "id": "Reviewer",
      "description": "Represents the author of the review.",
      "type": "object",
      "properties": {
        "profilePhotoUrl": {
          "description": "The profile photo link of the reviewer. Only populated if `is_anonymous` is false.",
          "type": "string"
        },
        "displayName": {
          "description": "The name of the reviewer. Only populated with the reviewer's real name if `is_anonymous` is false.",
          "type": "string"
        },
        "isAnonymous": {
          "description": "Indicates whether the reviewer has opted to remain anonymous.",
          "type": "boolean"
        }
      }
    },
    "ReviewReply": {
      "id": "ReviewReply",
      "description": "Represents the location owner\/manager's reply to a review.",
      "type": "object",
      "properties": {
        "comment": {
          "description": "The body of the reply as plain text with markups. The maximum length is 4096 bytes.",
          "type": "string"
        },
        "updateTime": {
          "description": "Output only. The timestamp for when the reply was last modified.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "ListReviewsResponse": {
      "id": "ListReviewsResponse",
      "description": "Response message for Reviews.ListReviews.",
      "type": "object",
      "properties": {
        "reviews": {
          "description": "The reviews.",
          "type": "array",
          "items": {
            "$ref": "Review"
          }
        },
        "averageRating": {
          "description": "The average star rating of all reviews for this location on a scale of 1 to 5, where 5 is the highest rating.",
          "type": "number",
          "format": "double"
        },
        "totalReviewCount": {
          "description": "The total number of reviews for this location.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "If the number of reviews exceeded the requested page size, this field is populated with a token to fetch the next page of reviews on a subsequent call to ListReviews. If there are no more reviews, this field is not present in the response.",
          "type": "string"
        }
      }
    },
    "ServiceList": {
      "id": "ServiceList",
      "description": "A service list containing one or more service items.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/serviceList`",
          "type": "string"
        },
        "serviceItems": {
          "description": "Service items that are contained within this service list. Duplicated service items will be removed automatically.",
          "type": "array",
          "items": {
            "$ref": "ServiceItem"
          }
        }
      }
    },
    "ServiceItem": {
      "id": "ServiceItem",
      "description": "A message that describes a single service item. It is used to describe the type of service that the merchant provides. For example, haircut can be a service.",
      "type": "object",
      "properties": {
        "isOffered": {
          "description": "Optional. This field decides whether or not the input service is offered by the merchant.",
          "type": "boolean"
        },
        "structuredServiceItem": {
          "description": "This field will be set case of structured services data.",
          "$ref": "StructuredServiceItem"
        },
        "freeFormServiceItem": {
          "description": "This field will be set case of free-form services data.",
          "$ref": "FreeFormServiceItem"
        },
        "price": {
          "description": "Optional. Represents the monetary price of the service item. We recommend that currency_code and units should be set when including a price.",
          "$ref": "Money"
        }
      }
    },
    "StructuredServiceItem": {
      "id": "StructuredServiceItem",
      "description": "Represents a structured service offered by the merchant. For eg: toilet_installation.",
      "type": "object",
      "properties": {
        "serviceTypeId": {
          "description": "Required. The `service_type_id` field is a Google provided unique ID that can be found in `ServiceTypeMetadata`. This information is provided by BatchGetBusinessCategories rpc service.",
          "type": "string"
        },
        "description": {
          "description": "Optional. Description of structured service item. The character limit is 300.",
          "type": "string"
        }
      }
    },
    "FreeFormServiceItem": {
      "id": "FreeFormServiceItem",
      "description": "Represents a free-form service offered by the merchant. These are services that are not exposed as part of our structure service data. The merchant manually enters the names for of such services via a geomerchant surface.",
      "type": "object",
      "properties": {
        "categoryId": {
          "description": "Required. The `category_id` and `service_type_id` should match the possible combinations provided in the `Category` message.",
          "type": "string"
        },
        "label": {
          "description": "Required. Language-tagged labels for the item. We recommend that item names be 140 characters or less, and descriptions 250 characters or less. This field should only be set if the input is a custom service item. Standardized service types should be updated via service_type_id.",
          "$ref": "Label"
        }
      }
    },
    "CompleteVerificationRequest": {
      "id": "CompleteVerificationRequest",
      "description": "Request message for Verifications.CompleteVerificationAction.",
      "type": "object",
      "properties": {
        "pin": {
          "description": "PIN code received by the merchant to complete the verification.",
          "type": "string"
        }
      }
    },
    "CompleteVerificationResponse": {
      "id": "CompleteVerificationResponse",
      "description": "Response message for Verifications.CompleteVerificationAction.",
      "type": "object",
      "properties": {
        "verification": {
          "description": "The completed verification.",
          "$ref": "Verification"
        }
      }
    },
    "Verification": {
      "id": "Verification",
      "description": "A verification represents a verification attempt on a location.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Resource name of the verification.",
          "type": "string"
        },
        "method": {
          "description": "The method of the verification.",
          "type": "string",
          "enumDescriptions": [
            "Default value, will result in errors.",
            "Send a postcard with a verification PIN to a specific mailing address. The PIN is used to complete verification with Google.",
            "Send an email with a verification PIN to a specific email address. The PIN is used to complete verification with Google.",
            "Make a phone call with a verification PIN to a specific phone number. The PIN is used to complete verification with Google.",
            "Send an SMS with a verification PIN to a specific phone number. The PIN is used to complete verification with Google.",
            "Verify the location without additional user action. This option may not be available for all locations."
          ],
          "enum": [
            "VERIFICATION_METHOD_UNSPECIFIED",
            "ADDRESS",
            "EMAIL",
            "PHONE_CALL",
            "SMS",
            "AUTO"
          ]
        },
        "state": {
          "description": "The state of the verification.",
          "type": "string",
          "enumDescriptions": [
            "Default value, will result in errors.",
            "The verification is pending.",
            "The verification is completed.",
            "The verification is failed."
          ],
          "enum": [
            "VERIFICATION_STATE_UNSPECIFIED",
            "PENDING",
            "COMPLETED",
            "FAILED"
          ]
        },
        "createTime": {
          "description": "The timestamp when the verification is requested.",
          "type": "string",
          "format": "google-datetime"
        }
      }
    },
    "ListVerificationsResponse": {
      "id": "ListVerificationsResponse",
      "description": "Response message for Verifications.ListVerifications.",
      "type": "object",
      "properties": {
        "verifications": {
          "description": "List of the verifications.",
          "type": "array",
          "items": {
            "$ref": "Verification"
          }
        },
        "nextPageToken": {
          "description": "If the number of verifications exceeded the requested page size, this field will be populated with a token to fetch the next page of verification on a subsequent call. If there are no more attributes, this field will not be present in the response.",
          "type": "string"
        }
      }
    },
    "FetchVerificationOptionsRequest": {
      "id": "FetchVerificationOptionsRequest",
      "description": "Request message for Verifications.FetchVerificationOptions.",
      "type": "object",
      "properties": {
        "languageCode": {
          "description": "The BCP 47 language code representing the language that is to be used for the verification process. Available options vary by language.",
          "type": "string"
        },
        "context": {
          "description": "Extra context information for the verification of service businesses. Required for the locations whose business type is CUSTOMER_LOCATION_ONLY. INVALID_ARGUMENT will be thrown if it is set for other business types of locations.",
          "$ref": "ServiceBusinessContext"
        }
      }
    },
    "ServiceBusinessContext": {
      "id": "ServiceBusinessContext",
      "description": "Additional data for service business verification.",
      "type": "object",
      "properties": {
        "address": {
          "description": "The verification address of the location. It is used to either enable more verification options or send a postcard.",
          "$ref": "PostalAddress"
        }
      }
    },
    "FetchVerificationOptionsResponse": {
      "id": "FetchVerificationOptionsResponse",
      "description": "Response message for Verifications.FetchVerificationOptions.",
      "type": "object",
      "properties": {
        "options": {
          "description": "The available verification options.",
          "type": "array",
          "items": {
            "$ref": "VerificationOption"
          }
        }
      }
    },
    "VerificationOption": {
      "id": "VerificationOption",
      "description": "The verification option represents how to verify the location (indicated by verification method) and where the verification will be sent to (indicated by display data).",
      "type": "object",
      "properties": {
        "verificationMethod": {
          "description": "Method to verify the location.",
          "type": "string",
          "enumDescriptions": [
            "Default value, will result in errors.",
            "Send a postcard with a verification PIN to a specific mailing address. The PIN is used to complete verification with Google.",
            "Send an email with a verification PIN to a specific email address. The PIN is used to complete verification with Google.",
            "Make a phone call with a verification PIN to a specific phone number. The PIN is used to complete verification with Google.",
            "Send an SMS with a verification PIN to a specific phone number. The PIN is used to complete verification with Google.",
            "Verify the location without additional user action. This option may not be available for all locations."
          ],
          "enum": [
            "VERIFICATION_METHOD_UNSPECIFIED",
            "ADDRESS",
            "EMAIL",
            "PHONE_CALL",
            "SMS",
            "AUTO"
          ]
        },
        "phoneData": {
          "description": "Set only if the method is PHONE_CALL or SMS.",
          "$ref": "PhoneVerificationData"
        },
        "addressData": {
          "description": "Set only if the method is MAIL.",
          "$ref": "AddressVerificationData"
        },
        "emailData": {
          "description": "Set only if the method is EMAIL.",
          "$ref": "EmailVerificationData"
        }
      }
    },
    "PhoneVerificationData": {
      "id": "PhoneVerificationData",
      "description": "Display Data for verifications through phone, e.g. phone call, sms.",
      "type": "object",
      "properties": {
        "phoneNumber": {
          "description": "Phone number that the PIN will be sent to.",
          "type": "string"
        }
      }
    },
    "AddressVerificationData": {
      "id": "AddressVerificationData",
      "description": "Display data for verifications through postcard.",
      "type": "object",
      "properties": {
        "businessName": {
          "description": "Merchant's business name.",
          "type": "string"
        },
        "address": {
          "description": "Address that a postcard can be sent to.",
          "$ref": "PostalAddress"
        }
      }
    },
    "EmailVerificationData": {
      "id": "EmailVerificationData",
      "description": "Display data for verifications through email.",
      "type": "object",
      "properties": {
        "domainName": {
          "description": "Domain name in the email address. e.g. \"gmail.com\" in foo@gmail.com",
          "type": "string"
        },
        "userName": {
          "description": "User name in the email address. e.g. \"foo\" in foo@gmail.com",
          "type": "string"
        },
        "isUserNameEditable": {
          "description": "Whether client is allowed to provide a different user name.",
          "type": "boolean"
        }
      }
    },
    "VerifyLocationRequest": {
      "id": "VerifyLocationRequest",
      "description": "Request message for Verifications.VerifyLocation.",
      "type": "object",
      "properties": {
        "method": {
          "description": "Verification method.",
          "type": "string",
          "enumDescriptions": [
            "Default value, will result in errors.",
            "Send a postcard with a verification PIN to a specific mailing address. The PIN is used to complete verification with Google.",
            "Send an email with a verification PIN to a specific email address. The PIN is used to complete verification with Google.",
            "Make a phone call with a verification PIN to a specific phone number. The PIN is used to complete verification with Google.",
            "Send an SMS with a verification PIN to a specific phone number. The PIN is used to complete verification with Google.",
            "Verify the location without additional user action. This option may not be available for all locations."
          ],
          "enum": [
            "VERIFICATION_METHOD_UNSPECIFIED",
            "ADDRESS",
            "EMAIL",
            "PHONE_CALL",
            "SMS",
            "AUTO"
          ]
        },
        "languageCode": {
          "description": "The BCP 47 language code representing the language that is to be used for the verification process.",
          "type": "string"
        },
        "emailInput": {
          "description": "The input for EMAIL method.",
          "$ref": "EmailInput"
        },
        "addressInput": {
          "description": "The input for ADDRESS method.",
          "$ref": "AddressInput"
        },
        "phoneInput": {
          "description": "The input for PHONE_CALL\/SMS method",
          "$ref": "PhoneInput"
        },
        "context": {
          "description": "Extra context information for the verification of service businesses. Required for the locations whose business type is CUSTOMER_LOCATION_ONLY. For ADDRESS verification, the address will be used to send out postcard. For other methods, it should be the same as the one that is passed to FetchVerificationOptions. INVALID_ARGUMENT will be thrown if it is set for other types of business locations.",
          "$ref": "ServiceBusinessContext"
        }
      }
    },
    "EmailInput": {
      "id": "EmailInput",
      "description": "Input for EMAIL verification.",
      "type": "object",
      "properties": {
        "emailAddress": {
          "description": "Email address where the PIN should be sent to. An email address is accepted only if it is one of the addresses provided by FetchVerificationOptions. If the EmailVerificationData has is_user_name_editable set to true, the client may specify a different user name (local-part) but must match the domain name.",
          "type": "string"
        }
      }
    },
    "AddressInput": {
      "id": "AddressInput",
      "description": "Input for ADDRESS verification.",
      "type": "object",
      "properties": {
        "mailerContactName": {
          "description": "Contact name the mail should be sent to.",
          "type": "string"
        }
      }
    },
    "PhoneInput": {
      "id": "PhoneInput",
      "description": "Input for PHONE_CALL\/SMS verification.",
      "type": "object",
      "properties": {
        "phoneNumber": {
          "description": "The phone number that should be called or be sent SMS to. It must be one of the phone numbers in the eligible options.",
          "type": "string"
        }
      }
    },
    "VerifyLocationResponse": {
      "id": "VerifyLocationResponse",
      "description": "Response message for Verifications.VerifyLocation.",
      "type": "object",
      "properties": {
        "verification": {
          "description": "The created verification request.",
          "$ref": "Verification"
        }
      }
    }
  },
  "resources": {
    "accounts": {
      "methods": {
        "list": {
          "id": "mybusiness.accounts.list",
          "path": "v4/accounts",
          "flatPath": "v4/accounts",
          "httpMethod": "GET",
          "parameters": {
            "pageSize": {
              "description": "How many accounts to fetch per page. Default is 20, minimum is 2, and maximum page size is 20.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "description": "If specified, the next page of accounts is retrieved. The `pageToken` is returned when a call to `accounts.list` returns more results than can fit into the requested page size.",
              "location": "query",
              "type": "string"
            },
            "name": {
              "description": "The resource name of the account for which the list of directly accessible accounts is to be retrieved. This only makes sense for Organizations and User Groups. If empty, will return `ListAccounts` for the authenticated user.",
              "location": "query",
              "type": "string"
            },
            "filter": {
              "description": "A filter constraining the accounts to return. The response includes only entries that match the filter. If `filter` is empty, then no constraints are applied and all accounts (paginated) are retrieved for the requested account. For example, a request with the filter `type=USER_GROUP` will only return user groups.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
          ],
          "response": {
            "$ref": "ListAccountsResponse"
          },
          "description": "Lists all of the accounts for the authenticated user. This includes all accounts that the user owns, as well as any accounts for which the user has management rights."
        },
        "get": {
          "id": "mybusiness.accounts.get",
          "path": "v4/{+name}",
          "flatPath": "v4/accounts/{accountsId}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "The name of the account to fetch.",
              "pattern": "^accounts\/[^\/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Account"
          },
          "description": "Gets the specified account. Returns `NOT_FOUND` if the account does not exist or if the caller does not have access rights to it."
        },
        "create": {
          "id": "mybusiness.accounts.create",
          "path": "v4/accounts",
          "flatPath": "v4/accounts",
          "httpMethod": "POST",
          "parameters": {
            "primaryOwner": {
              "description": "The resource name of the account which will be the primary owner of the account being created. It should be of the form `accounts\/{account_id}\/`.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
          ],
          "request": {
            "$ref": "Account"
          },
          "response": {
            "$ref": "Account"
          },
          "description": "Creates an account with the specified name and type under the given parent. - Personal accounts and Organizations cannot be created. - User Groups cannot be created with a Personal account as primary owner. - Location Groups cannot be created with a primary owner of a Personal account if the Personal account is in an Organization. - Location Groups cannot own Location Groups. "
        },
        "update": {
          "id": "mybusiness.accounts.update",
          "path": "v4/{+name}",
          "flatPath": "v4/accounts/{accountsId}",
          "httpMethod": "PUT",
          "parameters": {
            "name": {
              "description": "The name of the account to update.",
              "pattern": "^accounts\/[^\/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            },
            "validateOnly": {
              "description": "If true, the request is validated without actually updating the account.",
              "location": "query",
              "type": "boolean"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "Account"
          },
          "response": {
            "$ref": "Account"
          },
          "description": "Updates the specified business account. Personal accounts cannot be updated using this method. *Note:* The only editable field for an account is `account_name`. Any other fields passed in (such as `type` or `role`) are ignored."
        },
        "generateAccountNumber": {
          "id": "mybusiness.accounts.generateAccountNumber",
          "path": "v4/{+name}:generateAccountNumber",
          "flatPath": "v4/accounts/{accountsId}:generateAccountNumber",
          "httpMethod": "POST",
          "parameters": {
            "name": {
              "description": "The name of the account to generate an account number for.",
              "pattern": "^accounts\/[^\/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "GenerateAccountNumberRequest"
          },
          "response": {
            "$ref": "Account"
          },
          "description": "Generates an account number for this account. The account number is not provisioned when an account is created. Use this request to create an account number when it is required."
        },
        "getNotifications": {
          "id": "mybusiness.accounts.getNotifications",
          "path": "v4/{+name}",
          "flatPath": "v4/accounts/{accountsId}/notifications",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "The notification settings resource name.",
              "pattern": "^accounts\/[^\/]+\/notifications$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Notifications"
          },
          "description": "Returns the pubsub notification settings for the account."
        },
        "updateNotifications": {
          "id": "mybusiness.accounts.updateNotifications",
          "path": "v4/{+name}",
          "flatPath": "v4/accounts/{accountsId}/notifications",
          "httpMethod": "PUT",
          "parameters": {
            "name": {
              "description": "The notification settings resource name.",
              "pattern": "^accounts\/[^\/]+\/notifications$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "Notifications"
          },
          "response": {
            "$ref": "Notifications"
          },
          "description": "Sets the pubsub notification settings for the account informing Business Profile which topic to send pubsub notifications for: - New reviews for locations administered by the account. - Updated reviews for locations administered by the account. - New `GoogleUpdates` for locations administered by the account. An account will only have one notification settings resource, and only one pubsub topic can be set."
        },
        "deleteNotifications": {
          "id": "mybusiness.accounts.deleteNotifications",
          "path": "v4/{+name}",
          "flatPath": "v4/accounts/{accountsId}/notifications",
          "httpMethod": "DELETE",
          "parameters": {
            "name": {
              "description": "The resource name for the notification settings to be cleared.",
              "pattern": "^accounts\/[^\/]+\/notifications$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Empty"
          },
          "description": "Clears the pubsub notification settings for the account."
        },
        "listRecommendGoogleLocations": {
          "id": "mybusiness.accounts.listRecommendGoogleLocations",
          "path": "v4/{+name}:recommendGoogleLocations",
          "flatPath": "v4/accounts/{accountsId}:recommendGoogleLocations",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Name of the account resource to fetch recommended Google locations for.",
              "pattern": "^accounts\/[^\/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            },
            "pageSize": {
              "description": "How many locations to fetch per page. Default is 25, minimum is 1, and maximum page size is 100.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "description": "If specified, the next page of locations is retrieved.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "ListRecommendedGoogleLocationsResponse"
          },
          "description": "List all the GoogleLocations that have been recommended to the specified Business Profile account. Recommendations are provided for personal accounts and location groups only, requests for all other account types will result in an error. The recommendations for location groups are based on the locations in that group. The recommendations for personal accounts are based on all of the locations that the user has access to on Business Profile (which includes locations they can access through location groups), and is a superset of all recommendations generated for the user."
        }
      }
      ,
      "resources": {
        "invitations": {
          "methods": {
            "accept": {
              "id": "mybusiness.accounts.invitations.accept",
              "path": "v4/{+name}:accept",
              "flatPath": "v4/accounts/{accountsId}/invitations/{invitationsId}:accept",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The name of the invitation that is being accepted.",
                  "pattern": "^accounts\/[^\/]+\/invitations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "AcceptInvitationRequest"
              },
              "response": {
                "$ref": "Empty"
              },
              "description": "Accepts the specified invitation."
            },
            "decline": {
              "id": "mybusiness.accounts.invitations.decline",
              "path": "v4/{+name}:decline",
              "flatPath": "v4/accounts/{accountsId}/invitations/{invitationsId}:decline",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The name of the account invitation that is being declined.",
                  "pattern": "^accounts\/[^\/]+\/invitations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "DeclineInvitationRequest"
              },
              "response": {
                "$ref": "Empty"
              },
              "description": "Declines the specified invitation."
            },
            "list": {
              "id": "mybusiness.accounts.invitations.list",
              "path": "v4/{+parent}/invitations",
              "flatPath": "v4/accounts/{accountsId}/invitations",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "description": "The name of the account from which the list of invitations is being retrieved.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "targetType": {
                  "description": "Specifies which target types should appear in the response.",
                  "location": "query",
                  "type": "string",
                  "enumDescriptions": [
                    "List invitations for all target types. This is the default.",
                    "List invitations only for targets of type Account.",
                    "List invitations only for targets of type Location."
                  ],
                  "enum": [
                    "ALL",
                    "ACCOUNTS_ONLY",
                    "LOCATIONS_ONLY"
                  ]
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListInvitationsResponse"
              },
              "description": "Lists pending invitations for the specified account."
            }
          }
        },
        "admins": {
          "methods": {
            "list": {
              "id": "mybusiness.accounts.admins.list",
              "path": "v4/{+parent}/admins",
              "flatPath": "v4/accounts/{accountsId}/admins",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "description": "The name of the account from which to retrieve a list of admins.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListAccountAdminsResponse"
              },
              "description": "Lists the admins for the specified account."
            },
            "create": {
              "id": "mybusiness.accounts.admins.create",
              "path": "v4/{+parent}/admins",
              "flatPath": "v4/accounts/{accountsId}/admins",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "The resource name of the account this admin is created for.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "Admin"
              },
              "response": {
                "$ref": "Admin"
              },
              "description": "Invites the specified user to become an administrator for the specified account. The invitee must accept the invitation in order to be granted access to the account. See AcceptInvitation to programmatically accept an invitation."
            },
            "delete": {
              "id": "mybusiness.accounts.admins.delete",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/admins/{adminsId}",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "The resource name of the admin to remove from the account.",
                  "pattern": "^accounts\/[^\/]+\/admins\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Empty"
              },
              "description": "Removes the specified admin from the specified account."
            },
            "patch": {
              "id": "mybusiness.accounts.admins.patch",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/admins/{adminsId}",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "The resource name of the admin to update.",
                  "pattern": "^accounts\/[^\/]+\/admins\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "Admin"
              },
              "response": {
                "$ref": "Admin"
              },
              "description": "Updates the Admin for the specified Account Admin. Only the AdminRole of the Admin can be updated."
            }
          }
        },
        "locations": {
          "methods": {
            "getFoodMenus": {
              "id": "mybusiness.accounts.locations.getFoodMenus",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/foodMenus",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/foodMenus`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/foodMenus$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "readMask": {
                  "description": "Optional. The specific fields to return. If no mask is specified, then it returns the full FoodMenu (same as \"*\"). Repeated field items can not be individually specified. For example: \"name\" and \"menus\" are valid masks, while \"menus.sections\" is invalid.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "FoodMenus"
              },
              "description": "Returns the food menus of a specific location. Only call this if location.location_state.can_have_food_menu is true."
            },
            "updateFoodMenus": {
              "id": "mybusiness.accounts.locations.updateFoodMenus",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/foodMenus",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/foodMenus`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/foodMenus$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. The specific fields to update. If no mask is specified, then this is treated as a full update and all fields are set to the values passed in, which may include unsetting empty fields in the request. Repeated field items can not be individually updated. Note: \"name\" of FoodMenus is the resource identifier which is not updatable.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "FoodMenus"
              },
              "response": {
                "$ref": "FoodMenus"
              },
              "description": "Updates the food menus of a specific location. Only call this if location.location_state.can_have_food_menu is true."
            },
            "getHealthProviderAttributes": {
              "id": "mybusiness.accounts.locations.getHealthProviderAttributes",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/healthProviderAttributes",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: accounts\/{account_id}\/locations\/{location_id}\/healthProviderAttributes",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/healthProviderAttributes$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "languageCode": {
                  "description": "Optional. The BCP 47 code for the language. If a language code is not provided, it defaults to English. Right now only 'en' is supported.",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "HealthProviderAttributes"
              },
              "description": "Returns the Health provider attributes of a specific location."
            },
            "updateHealthProviderAttributes": {
              "id": "mybusiness.accounts.locations.updateHealthProviderAttributes",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/healthProviderAttributes",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/healthProviderAttributes`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/healthProviderAttributes$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. The specific fields to update. If no mask is specified, then this is treated as a full update and all fields are set to the values passed in, which may include unsetting empty fields in the request. In V1, there is only the insurance_networks field to update. More attributes will be supported later.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "HealthProviderAttributes"
              },
              "response": {
                "$ref": "HealthProviderAttributes"
              },
              "description": "Updates the Health provider attributes of a specific location."
            },
            "reportInsights": {
              "id": "mybusiness.accounts.locations.reportInsights",
              "path": "v4/{+name}/locations:reportInsights",
              "flatPath": "v4/accounts/{accountsId}/locations:reportInsights",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The account resource name.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "ReportLocationInsightsRequest"
              },
              "response": {
                "$ref": "ReportLocationInsightsResponse"
              },
              "description": "Returns a report containing insights on one or more metrics by location. *Note:* Insight reports are limited to a batch size of 10 `location_names` per call."
            },
            "list": {
              "id": "mybusiness.accounts.locations.list",
              "path": "v4/{+parent}/locations",
              "flatPath": "v4/accounts/{accountsId}/locations",
              "httpMethod": "GET",
              "parameters": {
                "parent": {
                  "description": "The name of the account to fetch locations from. If the Account is of AccountType PERSONAL, only Locations that are directly owned by the Account are returned, otherwise it will return all accessible locations from the Account, either directly or indirectly.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "pageSize": {
                  "description": "How many locations to fetch per page. Default is 100, minimum is 1, and maximum page size is 100.",
                  "location": "query",
                  "type": "integer",
                  "format": "int32"
                },
                "pageToken": {
                  "description": "If specified, it fetches the next `page` of locations. The page token is returned by previous calls to `ListLocations` when there were more locations than could fit in the requested page size.",
                  "location": "query",
                  "type": "string"
                },
                "filter": {
                  "description": "A filter constraining the locations to return. The response includes only entries that match the filter. If `filter` is empty, then constraints are applied and all locations (paginated) are retrieved for the requested account. For more information about valid fields and example usage, see [Work with Location Data Guide](https:\/\/developers.google.com\/my-business\/content\/location-data#filter_results_when_you_list_locations).",
                  "location": "query",
                  "type": "string"
                },
                "languageCode": {
                  "description": "The BCP 47 code of language to get display location properties in. If this language is not available, they will be provided in the language of the location. If neither is available, they will be provided in English. Deprecated. After August 15th, 2020, this field will no longer be applied. Instead, the language of the location will always be used.",
                  "location": "query",
                  "type": "string"
                },
                "orderBy": {
                  "description": "Sorting order for the request. Multiple fields should be comma-separated, following SQL syntax. The default sorting order is ascending. To specify descending order, a suffix \" desc\" should be added. Valid fields to order_by are location_name and store_code. For example: \"location_name, store_code desc\" or \"location_name\" or \"store_code desc\"",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "response": {
                "$ref": "ListLocationsResponse"
              },
              "description": "Lists the locations for the specified account."
            },
            "get": {
              "id": "mybusiness.accounts.locations.get",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "The name of the location to fetch.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Location"
              },
              "description": "Gets the specified location. Returns `NOT_FOUND` if the location does not exist."
            },
            "batchGet": {
              "id": "mybusiness.accounts.locations.batchGet",
              "path": "v4/{+name}/locations:batchGet",
              "flatPath": "v4/accounts/{accountsId}/locations:batchGet",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The name of the account from which to fetch locations.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "BatchGetLocationsRequest"
              },
              "response": {
                "$ref": "BatchGetLocationsResponse"
              },
              "description": "Gets all of the specified locations in the given account."
            },
            "getGoogleUpdated": {
              "id": "mybusiness.accounts.locations.getGoogleUpdated",
              "path": "v4/{+name}:googleUpdated",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:googleUpdated",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "The name of the location to fetch.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "GoogleUpdatedLocation"
              },
              "description": "Gets the Google-updated version of the specified location. Returns `NOT_FOUND` if the location does not exist."
            },
            "create": {
              "id": "mybusiness.accounts.locations.create",
              "path": "v4/{+parent}/locations",
              "flatPath": "v4/accounts/{accountsId}/locations",
              "httpMethod": "POST",
              "parameters": {
                "parent": {
                  "description": "The name of the account in which to create this location.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "validateOnly": {
                  "description": "If true, the request is validated without actually creating the location.",
                  "location": "query",
                  "type": "boolean"
                },
                "requestId": {
                  "description": "A unique request ID for the server to detect duplicated requests. We recommend using UUIDs. Max length is 50 characters.",
                  "location": "query",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "parent"
              ],
              "request": {
                "$ref": "Location"
              },
              "response": {
                "$ref": "Location"
              },
              "description": "Creates a new location owned by the specified account, and returns it."
            },
            "patch": {
              "id": "mybusiness.accounts.locations.patch",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "The name of the location to update.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "The specific fields to update. If no mask is specified, then this is treated as a full update and all fields are set to the values passed in, which may include unsetting empty fields in the request.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                },
                "validateOnly": {
                  "description": "If true, the request is validated without actually updating the location.",
                  "location": "query",
                  "type": "boolean"
                },
                "attributeMask": {
                  "description": "The IDs of the attributes to update. Only attributes noted in the mask will be updated. If an attribute is present in the mask and not in the location, it will be removed. An empty mask will update all attributes. Whenever this field is set, the update_mask should include attributes as one of the fields to update.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "Location"
              },
              "response": {
                "$ref": "Location"
              },
              "description": "Updates the specified location. Photos are only allowed on a location that has a Google+ page. Returns `NOT_FOUND` if the location does not exist."
            },
            "delete": {
              "id": "mybusiness.accounts.locations.delete",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}",
              "httpMethod": "DELETE",
              "parameters": {
                "name": {
                  "description": "The name of the location to delete.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Empty"
              },
              "description": "Deletes a location. *Note:* If this location cannot be deleted using the API as marked in the LocationState, use the [Business Profile](https:\/\/business.google.com\/manage\/) website. Returns `NOT_FOUND` if the location does not exist."
            },
            "findMatches": {
              "id": "mybusiness.accounts.locations.findMatches",
              "path": "v4/{+name}:findMatches",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:findMatches",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The resource name of the location to find matches for.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "FindMatchingLocationsRequest"
              },
              "response": {
                "$ref": "FindMatchingLocationsResponse"
              },
              "description": "Finds all of the possible locations that are a match to the specified location. This operation is only valid if the location is unverified."
            },
            "associate": {
              "id": "mybusiness.accounts.locations.associate",
              "path": "v4/{+name}:associate",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:associate",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The resource name of the location to associate.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "AssociateLocationRequest"
              },
              "response": {
                "$ref": "Empty"
              },
              "description": "Associates a location to a place ID. Any previous association is overwritten. This operation is only valid if the location is unverified. The association must be valid, that is, it appears in the list of `FindMatchingLocations`."
            },
            "clearAssociation": {
              "id": "mybusiness.accounts.locations.clearAssociation",
              "path": "v4/{+name}:clearAssociation",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:clearAssociation",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The resource name of the location to disassociate.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "ClearLocationAssociationRequest"
              },
              "response": {
                "$ref": "Empty"
              },
              "description": "Clears an association between a location and its place ID. This operation is only valid if the location is unverified."
            },
            "transfer": {
              "id": "mybusiness.accounts.locations.transfer",
              "path": "v4/{+name}:transfer",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:transfer",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The name of the location to transfer.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "TransferLocationRequest"
              },
              "response": {
                "$ref": "Location"
              },
              "description": "Moves a location from an account that the user owns to another account that the same user administers. The user must be an owner of the account the location is currently associated with and must also be at least a manager of the destination account. Returns the Location with its new resource name."
            },
            "getLodging": {
              "id": "mybusiness.accounts.locations.getLodging",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/lodging",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/lodging`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/lodging$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "readMask": {
                  "description": "Optional. The specific fields to return. If no mask is specified, then it returns the full Lodging (same as \"*\"). Repeated field items cannot be individually specified.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "Lodging"
              },
              "description": "Returns the Lodging of a specific location."
            },
            "updateLodging": {
              "id": "mybusiness.accounts.locations.updateLodging",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/lodging",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/lodging`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/lodging$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. The specific fields to update. If no mask is specified, then this is treated as a full update (same as \"*\") and all fields are set to the values passed in, which may include unsetting empty fields in the request. Repeated field items cannot be individually updated.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "Lodging"
              },
              "response": {
                "$ref": "Lodging"
              },
              "description": "Updates the Lodging of a specific location."
            },
            "batchGetReviews": {
              "id": "mybusiness.accounts.locations.batchGetReviews",
              "path": "v4/{+name}/locations:batchGetReviews",
              "flatPath": "v4/accounts/{accountsId}/locations:batchGetReviews",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "The name of the account from which to retrieve a list of reviews across multiple locations.",
                  "pattern": "^accounts\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "BatchGetReviewsRequest"
              },
              "response": {
                "$ref": "BatchGetReviewsResponse"
              },
              "description": "Returns the paginated list of reviews for all specified locations. This operation is only valid if the specified locations are verified. *Note:* Reviews are limited to a batch size of 200 `location_names` per call."
            },
            "updateServiceList": {
              "id": "mybusiness.accounts.locations.updateServiceList",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/serviceList",
              "httpMethod": "PATCH",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/serviceList`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/serviceList$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                },
                "updateMask": {
                  "description": "Optional. The specific fields to update. If no mask is specified, then this is treated as a full update and all fields are set to the values passed in, which may include unsetting empty fields in the request. Repeated field items can not be individually updated.",
                  "location": "query",
                  "type": "string",
                  "format": "google-fieldmask"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "ServiceList"
              },
              "response": {
                "$ref": "ServiceList"
              },
              "description": "Updates the specified service list of a location."
            },
            "getServiceList": {
              "id": "mybusiness.accounts.locations.getServiceList",
              "path": "v4/{+name}",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/serviceList",
              "httpMethod": "GET",
              "parameters": {
                "name": {
                  "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/servicelist`",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/serviceList$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "response": {
                "$ref": "ServiceList"
              },
              "description": "Get the specified service list of a location."
            },
            "fetchVerificationOptions": {
              "id": "mybusiness.accounts.locations.fetchVerificationOptions",
              "path": "v4/{+name}:fetchVerificationOptions",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:fetchVerificationOptions",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "Resource name of the location to verify.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "FetchVerificationOptionsRequest"
              },
              "response": {
                "$ref": "FetchVerificationOptionsResponse"
              },
              "description": "Reports all eligible verification options for a location in a specific language."
            },
            "verify": {
              "id": "mybusiness.accounts.locations.verify",
              "path": "v4/{+name}:verify",
              "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}:verify",
              "httpMethod": "POST",
              "parameters": {
                "name": {
                  "description": "Resource name of the location to verify.",
                  "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                  "location": "path",
                  "required": true,
                  "type": "string"
                }
              },
              "parameterOrder": [
                "name"
              ],
              "request": {
                "$ref": "VerifyLocationRequest"
              },
              "response": {
                "$ref": "VerifyLocationResponse"
              },
              "description": "Starts the verification process for a location."
            }
          }
          ,
          "resources": {
            "admins": {
              "methods": {
                "list": {
                  "id": "mybusiness.accounts.locations.admins.list",
                  "path": "v4/{+parent}/admins",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/admins",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location to list admins of.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListLocationAdminsResponse"
                  },
                  "description": "Lists all of the admins for the specified location."
                },
                "create": {
                  "id": "mybusiness.accounts.locations.admins.create",
                  "path": "v4/{+parent}/admins",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/admins",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "The resource name of the location this admin is created for.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "Admin"
                  },
                  "response": {
                    "$ref": "Admin"
                  },
                  "description": "Invites the specified user to become an administrator for the specified location. The invitee must accept the invitation in order to be granted access to the location. See AcceptInvitation to programmatically accept an invitation."
                },
                "delete": {
                  "id": "mybusiness.accounts.locations.admins.delete",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/admins/{adminsId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "The resource name of the admin to remove from the location.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/admins\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "description": "Removes the specified admin as a manager of the specified location."
                },
                "patch": {
                  "id": "mybusiness.accounts.locations.admins.patch",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/admins/{adminsId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "The resource name of the admin to update.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/admins\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "Admin"
                  },
                  "response": {
                    "$ref": "Admin"
                  },
                  "description": "Updates the Admin for the specified Location Admin. Only the AdminRole of the Admin can be updated."
                }
              }
            },
            "followers": {
              "methods": {
                "getMetadata": {
                  "id": "mybusiness.accounts.locations.followers.getMetadata",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/followers/metadata",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "The resource name of the location's followers metadata. accounts\/{account_id}\/locations\/{location_id}\/followers\/metadata",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/followers\/metadata$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "FollowersMetadata"
                  },
                  "description": "Get the followers settings for a location. NOT_FOUND is returned if either the account or the location doesn't exist. PRECONDITION_FAILED is returned if the location is not verified nor connected to Maps."
                }
              }
            },
            "localPosts": {
              "methods": {
                "reportInsights": {
                  "id": "mybusiness.accounts.locations.localPosts.reportInsights",
                  "path": "v4/{+name}/localPosts:reportInsights",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/localPosts:reportInsights",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Required. The name of the location for which to fetch insights.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "ReportLocalPostInsightsRequest"
                  },
                  "response": {
                    "$ref": "ReportLocalPostInsightsResponse"
                  },
                  "description": "Returns insights for a set of local posts associated with a single listing. Which metrics and how they are reported are options specified in the request proto. *Note:* Insight reports are limited to 100 `local_post_names` per call."
                },
                "create": {
                  "id": "mybusiness.accounts.locations.localPosts.create",
                  "path": "v4/{+parent}/localPosts",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/localPosts",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location in which to create this local post.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "LocalPost"
                  },
                  "response": {
                    "$ref": "LocalPost"
                  },
                  "description": "Creates a new local post associated with the specified location, and returns it."
                },
                "delete": {
                  "id": "mybusiness.accounts.locations.localPosts.delete",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/localPosts/{localPostsId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "The name of the local post to delete.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/localPosts\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "description": "Deletes a local post. Returns `NOT_FOUND` if the local post does not exist."
                },
                "get": {
                  "id": "mybusiness.accounts.locations.localPosts.get",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/localPosts/{localPostsId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "The name of the local post to fetch.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/localPosts\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "LocalPost"
                  },
                  "description": "Gets the specified local post. Returns `NOT_FOUND` if the local post does not exist."
                },
                "list": {
                  "id": "mybusiness.accounts.locations.localPosts.list",
                  "path": "v4/{+parent}/localPosts",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/localPosts",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location whose local posts will be listed.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "How many local posts to return per page. Default of 20. The minimum is 1, and maximum page size is 100.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "If specified, returns the next page of local posts.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListLocalPostsResponse"
                  },
                  "description": "Returns a list of local posts associated with a location."
                },
                "patch": {
                  "id": "mybusiness.accounts.locations.localPosts.patch",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/localPosts/{localPostsId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "The name of the local post to update.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/localPosts\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "updateMask": {
                      "description": "The specific fields to update. You must specify each field that is being updated in the mask.",
                      "location": "query",
                      "type": "string",
                      "format": "google-fieldmask"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "LocalPost"
                  },
                  "response": {
                    "$ref": "LocalPost"
                  },
                  "description": "Updates the specified local post and returns the updated local post."
                }
              }
            },
            "insuranceNetworks": {
              "methods": {
                "list": {
                  "id": "mybusiness.accounts.locations.insuranceNetworks.list",
                  "path": "v4/{+parent}/insuranceNetworks",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/insuranceNetworks",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Required. The name of the location whose insurance networks will be listed. The name is in the form: accounts\/{account_id}\/locations\/{location_id}",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "languageCode": {
                      "description": "Optional. The BCP 47 code for the language. If a language code is not provided, it defaults to English. Right now only 'en' is supported.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "How many insurance networks to return per page. The default value is 5000. Maximum page size is 10000.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "If specified, returns the next page of insurance networks.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListInsuranceNetworksResponse"
                  },
                  "description": "Returns a list of all insurance networks supported by Google."
                }
              }
            },
            "lodging": {
              "methods": {
                "getGoogleUpdated": {
                  "id": "mybusiness.accounts.locations.lodging.getGoogleUpdated",
                  "path": "v4/{+name}:getGoogleUpdated",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/lodging:getGoogleUpdated",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "Required. Google identifier for this location in the form: `accounts\/{account_id}\/locations\/{location_id}\/lodging`",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/lodging$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "readMask": {
                      "description": "Optional. The specific fields to return. If no mask is specified, then it returns the full Lodging (same as \"*\"). Repeated field items cannot be individually specified.",
                      "location": "query",
                      "type": "string",
                      "format": "google-fieldmask"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "GetGoogleUpdatedLodgingResponse"
                  },
                  "description": "Returns the Google updated Lodging of a specific location."
                }
              }
            },
            "media": {
              "methods": {
                "list": {
                  "id": "mybusiness.accounts.locations.media.list",
                  "path": "v4/{+parent}/media",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location whose media items will be listed.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "How many media items to return per page. The default value is 100, which is also the maximum supported number of media items able to be added to a location with the Google My Business API. Maximum page size is 2500.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "If specified, returns the next page of media items.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListMediaItemsResponse"
                  },
                  "description": "Returns a list of media items associated with a location."
                },
                "get": {
                  "id": "mybusiness.accounts.locations.media.get",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media/{mediaId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "The name of the requested media item.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/media\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "MediaItem"
                  },
                  "description": "Returns metadata for the requested media item."
                },
                "startUpload": {
                  "id": "mybusiness.accounts.locations.media.startUpload",
                  "path": "v4/{+parent}/media:startUpload",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media:startUpload",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "The resource name of the location this media item is to be added to.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "StartUploadMediaItemDataRequest"
                  },
                  "response": {
                    "$ref": "MediaItemDataRef"
                  },
                  "description": "Generates a `MediaItemDataRef` for media item uploading."
                },
                "create": {
                  "id": "mybusiness.accounts.locations.media.create",
                  "path": "v4/{+parent}/media",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "The resource name of the location where this media item will be created.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "MediaItem"
                  },
                  "response": {
                    "$ref": "MediaItem"
                  },
                  "description": "Creates a new media item for the location."
                },
                "delete": {
                  "id": "mybusiness.accounts.locations.media.delete",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media/{mediaId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "The name of the media item to be deleted.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/media\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "description": "Deletes the specified media item."
                },
                "patch": {
                  "id": "mybusiness.accounts.locations.media.patch",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media/{mediaId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "The name of the media item to be updated.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/media\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "updateMask": {
                      "description": "The specific fields to update. If no mask is specified, then this is treated as a full update and all editable fields are set to the values passed in.",
                      "location": "query",
                      "type": "string",
                      "format": "google-fieldmask"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "MediaItem"
                  },
                  "response": {
                    "$ref": "MediaItem"
                  },
                  "description": "Updates metadata of the specified media item. This can only be used to update the Category of a media item, with the exception that the new category cannot be COVER or PROFILE."
                }
              }
              ,
              "resources": {
                "customers": {
                  "methods": {
                    "list": {
                      "id": "mybusiness.accounts.locations.media.customers.list",
                      "path": "v4/{+parent}/media/customers",
                      "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media/customers",
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "description": "The name of the location whose customer media items will be listed.",
                          "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        },
                        "pageSize": {
                          "description": "How many media items to return per page. The default value is 100, the maximum supported page size is 200.",
                          "location": "query",
                          "type": "integer",
                          "format": "int32"
                        },
                        "pageToken": {
                          "description": "If specified, returns the next page of media items.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "ListCustomerMediaItemsResponse"
                      },
                      "description": "Returns a list of media items associated with a location that have been contributed by customers."
                    },
                    "get": {
                      "id": "mybusiness.accounts.locations.media.customers.get",
                      "path": "v4/{+name}",
                      "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/media/customers/{customersId}",
                      "httpMethod": "GET",
                      "parameters": {
                        "name": {
                          "description": "The resource name of the requested customer media item.",
                          "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/media\/customers\/[^\/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "MediaItem"
                      },
                      "description": "Returns metadata for the requested customer media item."
                    }
                  }
                }
              }
            },
            "questions": {
              "methods": {
                "list": {
                  "id": "mybusiness.accounts.locations.questions.list",
                  "path": "v4/{+parent}/questions",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location to fetch questions for.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "How many questions to fetch per page. The default and maximum `page_size` values are 10.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "If specified, the next page of questions is retrieved.",
                      "location": "query",
                      "type": "string"
                    },
                    "answersPerQuestion": {
                      "description": "How many answers to fetch per question. The default and maximum `answers_per_question` values are 10.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "filter": {
                      "description": "A filter constraining the questions to return. The only filter currently supported is \"ignore_answered=true\"",
                      "location": "query",
                      "type": "string"
                    },
                    "orderBy": {
                      "description": "The order to return the questions. Valid options include 'update_time desc' and 'upvote_count desc', which will return the questions sorted descendingly by the requested field. The default sort order is 'update_time desc'.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListQuestionsResponse"
                  },
                  "description": "Returns the paginated list of questions and some of its answers for a specified location."
                },
                "create": {
                  "id": "mybusiness.accounts.locations.questions.create",
                  "path": "v4/{+parent}/questions",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions",
                  "httpMethod": "POST",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location to write a question for.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "request": {
                    "$ref": "Question"
                  },
                  "response": {
                    "$ref": "Question"
                  },
                  "description": "Adds a question for the specified location."
                },
                "patch": {
                  "id": "mybusiness.accounts.locations.questions.patch",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions/{questionsId}",
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "description": "The name of the question to update.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/questions\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "Question"
                  },
                  "response": {
                    "$ref": "Question"
                  },
                  "description": "Updates a specific question written by the current user."
                },
                "delete": {
                  "id": "mybusiness.accounts.locations.questions.delete",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions/{questionsId}",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "The name of the question to delete.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/questions\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "description": "Deletes a specific question written by the current user."
                }
              }
              ,
              "resources": {
                "answers": {
                  "methods": {
                    "list": {
                      "id": "mybusiness.accounts.locations.questions.answers.list",
                      "path": "v4/{+parent}/answers",
                      "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions/{questionsId}/answers",
                      "httpMethod": "GET",
                      "parameters": {
                        "parent": {
                          "description": "The name of the question to fetch answers for.",
                          "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/questions\/[^\/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        },
                        "pageSize": {
                          "description": "How many answers to fetch per page. The default and maximum `page_size` values are 10.",
                          "location": "query",
                          "type": "integer",
                          "format": "int32"
                        },
                        "pageToken": {
                          "description": "If specified, the next page of answers is retrieved.",
                          "location": "query",
                          "type": "string"
                        },
                        "orderBy": {
                          "description": "The order to return the answers. Valid options include 'update_time desc' and 'upvote_count desc', which will return the answers sorted descendingly by the requested field. The default sort order is 'update_time desc'.",
                          "location": "query",
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "ListAnswersResponse"
                      },
                      "description": "Returns the paginated list of answers for a specified question."
                    },
                    "upsert": {
                      "id": "mybusiness.accounts.locations.questions.answers.upsert",
                      "path": "v4/{+parent}/answers:upsert",
                      "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions/{questionsId}/answers:upsert",
                      "httpMethod": "POST",
                      "parameters": {
                        "parent": {
                          "description": "The name of the question to write an answer for.",
                          "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/questions\/[^\/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "request": {
                        "$ref": "UpsertAnswerRequest"
                      },
                      "response": {
                        "$ref": "Answer"
                      },
                      "description": "Creates an answer or updates the existing answer written by the user for the specified question. A user can only create one answer per question."
                    },
                    "delete": {
                      "id": "mybusiness.accounts.locations.questions.answers.delete",
                      "path": "v4/{+parent}/answers:delete",
                      "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/questions/{questionsId}/answers:delete",
                      "httpMethod": "DELETE",
                      "parameters": {
                        "parent": {
                          "description": "The name of the question to delete an answer for.",
                          "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/questions\/[^\/]+$",
                          "location": "path",
                          "required": true,
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "Empty"
                      },
                      "description": "Deletes the answer written by the current user to a question."
                    }
                  }
                }
              }
            },
            "reviews": {
              "methods": {
                "deleteReply": {
                  "id": "mybusiness.accounts.locations.reviews.deleteReply",
                  "path": "v4/{+name}/reply",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/reviews/{reviewsId}/reply",
                  "httpMethod": "DELETE",
                  "parameters": {
                    "name": {
                      "description": "The name of the review reply to delete.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/reviews\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Empty"
                  },
                  "description": "Deletes the response to the specified review. This operation is only valid if the specified location is verified."
                },
                "get": {
                  "id": "mybusiness.accounts.locations.reviews.get",
                  "path": "v4/{+name}",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/reviews/{reviewsId}",
                  "httpMethod": "GET",
                  "parameters": {
                    "name": {
                      "description": "The name of the review to fetch.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/reviews\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Review"
                  },
                  "description": "Returns the specified review. This operation is only valid if the specified location is verified. Returns `NOT_FOUND` if the review does not exist, or has been deleted."
                },
                "list": {
                  "id": "mybusiness.accounts.locations.reviews.list",
                  "path": "v4/{+parent}/reviews",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/reviews",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "The name of the location to fetch reviews for.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "How many reviews to fetch per page. The maximum `page_size` is 50.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "If specified, it fetches the next page of reviews.",
                      "location": "query",
                      "type": "string"
                    },
                    "orderBy": {
                      "description": "Specifies the field to sort reviews by. If unspecified, the order of reviews returned will default to `update_time desc`. Valid orders to sort by are `rating`, `rating desc` and `update_time desc`.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListReviewsResponse"
                  },
                  "description": "Returns the paginated list of reviews for the specified location. This operation is only valid if the specified location is verified."
                },
                "updateReply": {
                  "id": "mybusiness.accounts.locations.reviews.updateReply",
                  "path": "v4/{+name}/reply",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/reviews/{reviewsId}/reply",
                  "httpMethod": "PUT",
                  "parameters": {
                    "name": {
                      "description": "The name of the review to respond to.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/reviews\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "ReviewReply"
                  },
                  "response": {
                    "$ref": "ReviewReply"
                  },
                  "description": "Updates the reply to the specified review. A reply is created if one does not exist. This operation is only valid if the specified location is verified."
                }
              }
            },
            "verifications": {
              "methods": {
                "complete": {
                  "id": "mybusiness.accounts.locations.verifications.complete",
                  "path": "v4/{+name}:complete",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/verifications/{verificationsId}:complete",
                  "httpMethod": "POST",
                  "parameters": {
                    "name": {
                      "description": "Resource name of the verification to complete.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+\/verifications\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "request": {
                    "$ref": "CompleteVerificationRequest"
                  },
                  "response": {
                    "$ref": "CompleteVerificationResponse"
                  },
                  "description": "Completes a `PENDING` verification. It is only necessary for non `AUTO` verification methods. `AUTO` verification request is instantly `VERIFIED` upon creation."
                },
                "list": {
                  "id": "mybusiness.accounts.locations.verifications.list",
                  "path": "v4/{+parent}/verifications",
                  "flatPath": "v4/accounts/{accountsId}/locations/{locationsId}/verifications",
                  "httpMethod": "GET",
                  "parameters": {
                    "parent": {
                      "description": "Resource name of the location that verification requests belong to.",
                      "pattern": "^accounts\/[^\/]+\/locations\/[^\/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "How many verification to include per page. If not set, return all.",
                      "location": "query",
                      "type": "integer",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "If specified, returns the next page of verifications.",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListVerificationsResponse"
                  },
                  "description": "List verifications of a location, ordered by create time."
                }
              }
            }
          }
        }
      }
    },
    "categories": {
      "methods": {
        "list": {
          "id": "mybusiness.categories.list",
          "path": "v4/categories",
          "flatPath": "v4/categories",
          "httpMethod": "GET",
          "parameters": {
            "regionCode": {
              "description": "The ISO 3166-1 alpha-2 country code.",
              "location": "query",
              "type": "string"
            },
            "languageCode": {
              "description": "The BCP 47 code of language. If the language is not available, it will default to English.",
              "location": "query",
              "type": "string"
            },
            "searchTerm": {
              "description": "Optional filter string from user.",
              "location": "query",
              "type": "string"
            },
            "pageSize": {
              "description": "How many categories to fetch per page. Default is 100, minimum is 1, and maximum page size is 100.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "description": "If specified, the next page of categories will be fetched.",
              "location": "query",
              "type": "string"
            },
            "view": {
              "description": "Optional. Specifies which parts to the Category resource should be returned in the response.",
              "location": "query",
              "type": "string",
              "enumDescriptions": [
                "Not specified, equivalent to CATEGORY_METADATA_ONLY.",
                "The server response will only include Category fields display_name, category_id and language_code. It omits any service type metadata related fields.",
                "Returns all the fields in the response."
              ],
              "enum": [
                "CATEGORY_VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ]
            }
          },
          "parameterOrder": [
          ],
          "response": {
            "$ref": "ListBusinessCategoriesResponse"
          },
          "description": "Returns a list of business categories. Search will match the category name but not the category ID. *Note:* Search only matches the front of a category name (that is, 'food' may return 'Food Court' but not 'Fast Food Restaurant')."
        },
        "batchGet": {
          "id": "mybusiness.categories.batchGet",
          "path": "v4/categories:batchGet",
          "flatPath": "v4/categories:batchGet",
          "httpMethod": "GET",
          "parameters": {
            "languageCode": {
              "description": "Required. The BCP 47 code of language that the category names should be returned in.",
              "location": "query",
              "type": "string"
            },
            "categoryIds": {
              "description": "Required. At least one name must be set. The GConcept ids the localized category names should be returned for.",
              "location": "query",
              "repeated": true,
              "type": "string"
            },
            "regionCode": {
              "description": "Optional. The ISO 3166-1 alpha-2 country code used to infer non-standard language.",
              "location": "query",
              "type": "string"
            },
            "view": {
              "description": "Required. Specifies which parts to the Category resource should be returned in the response.",
              "location": "query",
              "type": "string",
              "enumDescriptions": [
                "Not specified, equivalent to CATEGORY_METADATA_ONLY.",
                "The server response will only include Category fields display_name, category_id and language_code. It omits any service type metadata related fields.",
                "Returns all the fields in the response."
              ],
              "enum": [
                "CATEGORY_VIEW_UNSPECIFIED",
                "BASIC",
                "FULL"
              ]
            }
          },
          "parameterOrder": [
          ],
          "response": {
            "$ref": "BatchGetBusinessCategoriesResponse"
          },
          "description": "Returns a list of business categories for the provided language and GConcept ids."
        }
      }
    },
    "googleLocations": {
      "methods": {
        "search": {
          "id": "mybusiness.googleLocations.search",
          "path": "v4/googleLocations:search",
          "flatPath": "v4/googleLocations:search",
          "httpMethod": "POST",
          "parameters": {
          },
          "parameterOrder": [
          ],
          "request": {
            "$ref": "SearchGoogleLocationsRequest"
          },
          "response": {
            "$ref": "SearchGoogleLocationsResponse"
          },
          "description": "Search all of the possible locations that are a match to the specified request."
        },
        "report": {
          "id": "mybusiness.googleLocations.report",
          "path": "v4/{+name}:report",
          "flatPath": "v4/googleLocations/{googleLocationsId}:report",
          "httpMethod": "POST",
          "parameters": {
            "name": {
              "description": "Resource name of a [GoogleLocation], in the format `googleLocations\/{googleLocationId}`.",
              "pattern": "^googleLocations\/[^\/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "request": {
            "$ref": "ReportGoogleLocationRequest"
          },
          "response": {
            "$ref": "Empty"
          },
          "description": "Report a GoogleLocation."
        }
      }
    },
    "chains": {
      "methods": {
        "get": {
          "id": "mybusiness.chains.get",
          "path": "v4/{+name}",
          "flatPath": "v4/chains/{chainsId}",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "The chain's resource name, in the format `chains\/{chain_place_id}`.",
              "pattern": "^chains\/[^\/]+$",
              "location": "path",
              "required": true,
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "response": {
            "$ref": "Chain"
          },
          "description": "Gets the specified chain. Returns `NOT_FOUND` if the chain does not exist."
        },
        "search": {
          "id": "mybusiness.chains.search",
          "path": "v4/chains:search",
          "flatPath": "v4/chains:search",
          "httpMethod": "GET",
          "parameters": {
            "chainDisplayName": {
              "description": "Search for a chain by its name. Exact\/partial\/fuzzy\/related queries are supported. Examples: \"walmart\", \"wal-mart\", \"walmmmart\", \"\u6C83\u5C14\u739B\"",
              "location": "query",
              "type": "string"
            },
            "resultCount": {
              "description": "The maximum number of matched chains to return from this query. The default is 10. The maximum possible value is 500.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            }
          },
          "parameterOrder": [
          ],
          "response": {
            "$ref": "SearchChainsResponse"
          },
          "description": "Searches the chain based on chain name."
        }
      }
    },
    "attributes": {
      "methods": {
        "list": {
          "id": "mybusiness.attributes.list",
          "path": "v4/attributes",
          "flatPath": "v4/attributes",
          "httpMethod": "GET",
          "parameters": {
            "name": {
              "description": "Resource name of the location to look up available attributes.",
              "location": "query",
              "type": "string"
            },
            "categoryId": {
              "description": "The primary category stable ID to find available attributes.",
              "location": "query",
              "type": "string"
            },
            "country": {
              "description": "The ISO 3166-1 alpha-2 country code to find available attributes.",
              "location": "query",
              "type": "string"
            },
            "languageCode": {
              "description": "The BCP 47 code of language to get attribute display names in. If this language is not available, they will be provided in English.",
              "location": "query",
              "type": "string"
            },
            "pageSize": {
              "description": "How many attributes to include per page. Default is 200, minimum is 1.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "pageToken": {
              "description": "If specified, the next page of attribute metadata is retrieved. The `pageToken` is returned when a call to `attributes.list` returns more results than can fit into the requested page size.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
          ],
          "response": {
            "$ref": "ListAttributeMetadataResponse"
          },
          "description": "Returns the list of available attributes that would be available for a location with the given primary category and country."
        }
      }
    }
  },
  "basePath": ""
}
