openapi: 3.0.3 info: title: Google Business Profile API description: | The Google Business Profile API (formerly Google My Business API) provides programmatic access to manage business location information on Google. This comprehensive API enables businesses and developers to: **Core Features (v4 API - mybusiness.googleapis.com):** - **Accounts**: Manage business accounts and admin permissions - **Locations**: Create, update, and manage business locations - **Posts**: Create and manage local posts for business promotion - **Media**: Upload and manage photos and videos - **Reviews**: Manage customer reviews and responses - **Q&A**: Handle questions and answers from customers - **Verification**: Verify business location ownership - **Insights**: Access performance analytics and reporting - **Food Menus**: Manage restaurant menus, sections, items, and attributes **Business Information API v1 (mybusinessbusinessinformation.googleapis.com):** - **Locations v1**: Current recommended API for location management - **Attributes**: Manage location-specific business attributes - **Categories**: Access business category information - **Chains**: Search and manage business chains - **Google Locations**: Search for matching Google locations **Place Actions API v1 (mybusinessplaceactions.googleapis.com):** - **Place Actions**: Manage action links for appointments, reservations, food ordering, etc. **Authentication:** OAuth 2.0 with Google Account version: "4.1" contact: name: Google Business Profile API url: https://developers.google.com/my-business license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: https://mybusiness.googleapis.com description: Google Business Profile API (v4) - url: https://mybusinessbusinessinformation.googleapis.com description: Business Information API (v1) - Locations, Attributes, Categories - url: https://mybusinessplaceactions.googleapis.com description: Place Actions API (v1) - Action Links for reservations, ordering, etc. paths: # Accounts Management /v4/accounts: get: tags: [Accounts] summary: List accounts description: Lists all accounts for the authenticated user parameters: - name: pageSize in: query description: Number of accounts to return per page schema: type: integer minimum: 1 maximum: 100 default: 20 - name: pageToken in: query description: Token for pagination schema: type: string - name: name in: query description: A filter constraining the accounts returned schema: type: string responses: '200': description: List of accounts retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListAccountsResponse' '401': description: Unauthorized '403': description: Forbidden security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Accounts] summary: Create account description: Creates a new business account requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Account' example: accountName: "My Business Account" type: "BUSINESS" role: "OWNER" responses: '200': description: Account created successfully content: application/json: schema: $ref: '#/components/schemas/Account' '400': description: Invalid request '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{name}: get: tags: [Accounts] summary: Get account description: Gets the specified account parameters: - name: name in: path required: true description: Account resource name schema: type: string example: "accounts/123456789" responses: '200': description: Account retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Account' '404': description: Account not found '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] put: tags: [Accounts] summary: Update account description: Updates the specified business account parameters: - name: name in: path required: true description: Account resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Account' responses: '200': description: Account updated successfully content: application/json: schema: $ref: '#/components/schemas/Account' '400': description: Invalid request '404': description: Account not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Locations Management /v4/{parent}/locations: get: tags: [Locations] summary: List locations description: Lists locations for the specified account parameters: - name: parent in: path required: true description: Parent account resource name schema: type: string example: "accounts/123456789" - name: pageSize in: query description: Number of locations to return schema: type: integer minimum: 1 maximum: 100 default: 20 - name: pageToken in: query description: Token for pagination schema: type: string - name: filter in: query description: Filter for location attributes schema: type: string - name: orderBy in: query description: Sort order for locations schema: type: string - name: languageCode in: query description: Language code for localized content schema: type: string example: "en-US" responses: '200': description: Locations retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListLocationsResponse' '401': description: Unauthorized '404': description: Account not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Locations] summary: Create location description: Creates a new location for the specified account parameters: - name: parent in: path required: true description: Parent account resource name schema: type: string - name: requestId in: query description: Unique request identifier schema: type: string - name: validateOnly in: query description: Validate request without creating location schema: type: boolean requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Location' example: locationName: "My Business Location" primaryCategory: categoryId: "gcid:restaurant" address: regionCode: "US" languageCode: "en" postalCode: "90210" administrativeArea: "CA" locality: "Beverly Hills" addressLines: ["123 Main St"] primaryPhone: "+1-555-123-4567" websiteUri: "https://www.mybusiness.com" regularHours: periods: - openDay: "MONDAY" openTime: "09:00" closeDay: "MONDAY" closeTime: "17:00" responses: '200': description: Location created successfully content: application/json: schema: $ref: '#/components/schemas/Location' '400': description: Invalid request '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{name}/locations/{locationId}: get: tags: [Locations] summary: Get location description: Gets the specified location parameters: - name: name in: path required: true description: Account resource name schema: type: string - name: locationId in: path required: true description: Location ID schema: type: string - name: readMask in: query description: Fields to include in response schema: type: string responses: '200': description: Location retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Location' '404': description: Location not found '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] patch: tags: [Locations] summary: Update location description: Updates the specified location parameters: - name: name in: path required: true description: Account resource name schema: type: string - name: locationId in: path required: true description: Location ID schema: type: string - name: updateMask in: query description: Fields to update schema: type: string - name: validateOnly in: query description: Validate request without updating schema: type: boolean requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Location' responses: '200': description: Location updated successfully content: application/json: schema: $ref: '#/components/schemas/Location' '400': description: Invalid request '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] delete: tags: [Locations] summary: Delete location description: Deletes the specified location parameters: - name: name in: path required: true description: Account resource name schema: type: string - name: locationId in: path required: true description: Location ID schema: type: string responses: '200': description: Location deleted successfully '404': description: Location not found '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Local Posts /v4/{parent}/localPosts: get: tags: [Local Posts] summary: List local posts description: Returns a list of local posts associated with a location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string example: "accounts/123456789/locations/987654321" - name: pageSize in: query description: Number of posts to return schema: type: integer minimum: 1 maximum: 100 default: 20 - name: pageToken in: query description: Token for pagination schema: type: string responses: '200': description: Local posts retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListLocalPostsResponse' '401': description: Unauthorized '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Local Posts] summary: Create local post description: Creates a new local post for the specified location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LocalPost' examples: text_post: summary: Text-only post value: languageCode: "en-US" summary: "New menu items available!" event: title: "Special Promotion" schedule: startDate: year: 2026 month: 2 day: 15 endDate: year: 2026 month: 2 day: 28 offer_post: summary: Offer post value: languageCode: "en-US" summary: "20% off all items this weekend!" offer: offerType: "OFFER" redeemOnlineUrl: "https://mybusiness.com/offer" termsConditions: "Valid through Sunday. Cannot be combined with other offers." couponCode: "SAVE20" responses: '200': description: Local post created successfully content: application/json: schema: $ref: '#/components/schemas/LocalPost' '400': description: Invalid request '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{name}: get: tags: [Local Posts] summary: Get local post description: Gets the specified local post parameters: - name: name in: path required: true description: Local post resource name schema: type: string responses: '200': description: Local post retrieved successfully content: application/json: schema: $ref: '#/components/schemas/LocalPost' '404': description: Local post not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] patch: tags: [Local Posts] summary: Update local post description: Updates the specified local post parameters: - name: name in: path required: true description: Local post resource name schema: type: string - name: updateMask in: query description: Fields to update schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LocalPost' responses: '200': description: Local post updated successfully content: application/json: schema: $ref: '#/components/schemas/LocalPost' '400': description: Invalid request '404': description: Local post not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] delete: tags: [Local Posts] summary: Delete local post description: Deletes the specified local post parameters: - name: name in: path required: true description: Local post resource name schema: type: string responses: '200': description: Local post deleted successfully '404': description: Local post not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Media Management /v4/{parent}/media: get: tags: [Media] summary: List media description: Returns a list of media items associated with a location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string - name: pageSize in: query description: Number of media items to return schema: type: integer minimum: 1 maximum: 100 default: 20 - name: pageToken in: query description: Token for pagination schema: type: string responses: '200': description: Media items retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListMediaItemsResponse' '401': description: Unauthorized '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Media] summary: Create media item description: Creates a new media item for the location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MediaItem' example: locationAssociation: category: "ADDITIONAL" mediaFormat: "PHOTO" sourceUrl: "https://example.com/photo.jpg" description: "Interior view of our restaurant" attribution: authorName: "Business Owner" responses: '200': description: Media item created successfully content: application/json: schema: $ref: '#/components/schemas/MediaItem' '400': description: Invalid request '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{parent}/media:startUpload: post: tags: [Media] summary: Start media upload description: Generates a MediaItemDataRef for media item uploading parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string responses: '200': description: Upload reference generated successfully content: application/json: schema: $ref: '#/components/schemas/MediaItemDataRef' '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Reviews Management /v4/{parent}/reviews: get: tags: [Reviews] summary: List reviews description: Returns paginated list of reviews for the specified location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string - name: pageSize in: query description: Number of reviews to return schema: type: integer minimum: 1 maximum: 50 default: 20 - name: pageToken in: query description: Token for pagination schema: type: string - name: orderBy in: query description: Sort order for reviews schema: type: string enum: [rating, updateTime] responses: '200': description: Reviews retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListReviewsResponse' '401': description: Unauthorized '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{name}/reply: put: tags: [Reviews] summary: Update review reply description: Updates the reply to the specified review parameters: - name: name in: path required: true description: Review resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Reply' example: comment: "Thank you for your feedback! We appreciate your business and will use your suggestions to improve." updateTime: "2026-02-02T15:30:00Z" responses: '200': description: Review reply updated successfully content: application/json: schema: $ref: '#/components/schemas/Reply' '400': description: Invalid request '404': description: Review not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] delete: tags: [Reviews] summary: Delete review reply description: Deletes the response to the specified review parameters: - name: name in: path required: true description: Review resource name schema: type: string responses: '200': description: Review reply deleted successfully '404': description: Review not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Questions and Answers /v4/{parent}/questions: get: tags: [Q&A] summary: List questions description: Returns paginated list of questions for a specified location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string - name: pageSize in: query description: Number of questions to return schema: type: integer minimum: 1 maximum: 100 default: 20 - name: pageToken in: query description: Token for pagination schema: type: string - name: answersPerQuestion in: query description: Number of answers to include per question schema: type: integer minimum: 0 maximum: 10 default: 0 - name: filter in: query description: Filter for questions schema: type: string - name: orderBy in: query description: Sort order for questions schema: type: string enum: [updateTime] responses: '200': description: Questions retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListQuestionsResponse' '401': description: Unauthorized '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Q&A] summary: Create question description: Adds a question for the specified location parameters: - name: parent in: path required: true description: Parent location resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Question' example: text: "What are your hours of operation on weekends?" author: displayName: "Customer" type: "REGULAR_USER" responses: '200': description: Question created successfully content: application/json: schema: $ref: '#/components/schemas/Question' '400': description: Invalid request '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{parent}/answers:upsert: post: tags: [Q&A] summary: Upsert answer description: Creates an answer or updates the existing answer for a question parameters: - name: parent in: path required: true description: Parent question resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Answer' example: text: "We are open Saturday 10am-8pm and Sunday 11am-6pm." author: displayName: "Business Owner" type: "MERCHANT" responses: '200': description: Answer created or updated successfully content: application/json: schema: $ref: '#/components/schemas/Answer' '400': description: Invalid request '404': description: Question not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Insights and Analytics /v4/{name}/locations:reportInsights: post: tags: [Insights] summary: Report location insights description: Returns insights for one or more metrics by location parameters: - name: name in: path required: true description: Account resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReportInsightsRequest' example: locationNames: - "accounts/123456789/locations/987654321" basicRequest: metricRequests: - metric: "QUERIES_DIRECT" options: ["AGGREGATION_METHOD_DAILY_VALUES"] - metric: "QUERIES_INDIRECT" - metric: "VIEWS_MAPS" - metric: "VIEWS_SEARCH" - metric: "ACTIONS_WEBSITE" - metric: "ACTIONS_PHONE" timeRange: startTime: "2026-01-01T00:00:00Z" endTime: "2026-01-31T23:59:59Z" responses: '200': description: Insights retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ReportInsightsResponse' '400': description: Invalid request '401': description: Unauthorized security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Business Categories /v4/categories: get: tags: [Categories] summary: List business categories description: Returns a list of business categories parameters: - name: languageCode in: query description: Language code for category names schema: type: string default: "en-US" - name: regionCode in: query description: Region code for relevant categories schema: type: string default: "US" - name: view in: query description: Specifies which parts to include schema: type: string enum: [CATEGORY_VIEW_UNSPECIFIED, BASIC, FULL] default: BASIC - name: filter in: query description: Filter to apply to categories schema: type: string - name: pageSize in: query description: Number of categories to return schema: type: integer minimum: 1 maximum: 100 default: 100 - name: pageToken in: query description: Token for pagination schema: type: string responses: '200': description: Categories retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ListCategoriesResponse' '400': description: Invalid request security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Verification /v4/{name}:verify: post: tags: [Verification] summary: Verify location description: Starts the verification process for a location parameters: - name: name in: path required: true description: Location resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifyLocationRequest' example: verificationMethod: "MAIL" languageCode: "en-US" mailerContact: contactName: "John Smith" phoneNumber: "+1-555-123-4567" responses: '200': description: Verification process started successfully content: application/json: schema: $ref: '#/components/schemas/VerifyLocationResponse' '400': description: Invalid request '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v4/{name}:fetchVerificationOptions: post: tags: [Verification] summary: Fetch verification options description: Reports all eligible verification options for a location parameters: - name: name in: path required: true description: Location resource name schema: type: string requestBody: required: true content: application/json: schema: type: object properties: languageCode: type: string description: Language code for verification options example: "en-US" required: [languageCode] responses: '200': description: Verification options retrieved successfully content: application/json: schema: $ref: '#/components/schemas/FetchVerificationOptionsResponse' '400': description: Invalid request '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # =========================================== # Food Menus (v4 API - mybusiness.googleapis.com) # =========================================== /v4/{parent}/foodMenus: get: tags: [Food Menus] summary: Get food menus description: Returns the food menus for a location servers: - url: https://mybusiness.googleapis.com parameters: - name: parent in: path required: true description: Location resource name (accounts/{accountId}/locations/{locationId}) schema: type: string example: "accounts/123456789/locations/987654321" responses: '200': description: Food menus retrieved successfully content: application/json: schema: $ref: '#/components/schemas/FoodMenus' '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] patch: tags: [Food Menus] summary: Update food menus description: Updates the food menus for a location servers: - url: https://mybusiness.googleapis.com parameters: - name: parent in: path required: true description: Location resource name schema: type: string - name: updateMask in: query description: Fields to update (comma-separated field paths) schema: type: string example: "menus" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FoodMenus' responses: '200': description: Food menus updated successfully content: application/json: schema: $ref: '#/components/schemas/FoodMenus' '400': description: Invalid request '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # =========================================== # Business Information API v1 (mybusinessbusinessinformation.googleapis.com) # =========================================== # Locations v1 /v1/{name}: get: tags: [Locations v1] summary: Get location description: Returns the specified location servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: name in: path required: true description: Location resource name (locations/{locationId}) schema: type: string example: "locations/987654321" - name: readMask in: query description: Fields to return (comma-separated field paths) schema: type: string example: "name,title,storefrontAddress" responses: '200': description: Location retrieved successfully content: application/json: schema: $ref: '#/components/schemas/LocationV1' '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] patch: tags: [Locations v1] summary: Update location description: Updates the specified location servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: name in: path required: true description: Location resource name schema: type: string - name: updateMask in: query required: true description: Fields to update (comma-separated field paths) schema: type: string example: "title,storefrontAddress" - name: validateOnly in: query description: Only validate the request without updating schema: type: boolean requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LocationV1' responses: '200': description: Location updated successfully content: application/json: schema: $ref: '#/components/schemas/LocationV1' '400': description: Invalid request '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] delete: tags: [Locations v1] summary: Delete location description: Deletes a location servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: name in: path required: true description: Location resource name schema: type: string responses: '200': description: Location deleted successfully '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v1/{parent}/locations: get: tags: [Locations v1] summary: List locations description: Lists the locations for the specified account servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: parent in: path required: true description: Account resource name (accounts/{accountId}) schema: type: string - name: pageSize in: query description: Number of locations to return schema: type: integer maximum: 100 - name: pageToken in: query description: Pagination token schema: type: string - name: filter in: query description: Filter expression schema: type: string - name: orderBy in: query description: Sort order schema: type: string - name: readMask in: query description: Fields to return schema: type: string responses: '200': description: Locations listed successfully content: application/json: schema: $ref: '#/components/schemas/ListLocationsResponseV1' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Locations v1] summary: Create location description: Creates a new location owned by the logged in user servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: parent in: path required: true description: Account resource name schema: type: string - name: validateOnly in: query description: Only validate without creating schema: type: boolean - name: requestId in: query description: Unique request ID for idempotency schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LocationV1' responses: '200': description: Location created successfully content: application/json: schema: $ref: '#/components/schemas/LocationV1' '400': description: Invalid request security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Attributes v1 /v1/{name}/attributes: get: tags: [Attributes] summary: Get location attributes description: Looks up all the attributes set for a given location servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: name in: path required: true description: Location resource name (locations/{locationId}) schema: type: string example: "locations/987654321" responses: '200': description: Attributes retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Attributes' '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] patch: tags: [Attributes] summary: Update location attributes description: Updates the attributes for a given location servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: name in: path required: true description: Location resource name schema: type: string - name: attributeMask in: query description: Attribute names to update (comma-separated) schema: type: string example: "url_appointment,has_wheelchair_accessible_entrance" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Attributes' responses: '200': description: Attributes updated successfully content: application/json: schema: $ref: '#/components/schemas/Attributes' '400': description: Invalid request '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v1/attributes: get: tags: [Attributes] summary: List available attributes description: Returns the list of attributes that would be available for a location with the given primary category and country servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: categoryName in: query description: Primary category stable ID schema: type: string - name: regionCode in: query description: ISO 3166-1 alpha-2 country code schema: type: string - name: languageCode in: query description: BCP 47 language code schema: type: string - name: showAll in: query description: Show all available attributes schema: type: boolean - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Attributes listed successfully content: application/json: schema: $ref: '#/components/schemas/ListAttributeMetadataResponse' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Categories v1 /v1/categories: get: tags: [Categories] summary: List categories description: Returns a list of business categories servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: regionCode in: query description: ISO 3166-1 alpha-2 country code schema: type: string - name: languageCode in: query description: BCP 47 language code schema: type: string - name: filter in: query description: Filter expression for searchable categories schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string - name: view in: query description: Category view (BASIC or FULL) schema: type: string enum: [CATEGORY_VIEW_UNSPECIFIED, BASIC, FULL] responses: '200': description: Categories listed successfully content: application/json: schema: $ref: '#/components/schemas/ListCategoriesResponse' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v1/categories:batchGet: get: tags: [Categories] summary: Batch get categories description: Returns a list of business categories for the provided language and GConcept ids servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: names in: query description: Category resource names schema: type: array items: type: string - name: languageCode in: query description: BCP 47 language code schema: type: string - name: regionCode in: query description: ISO 3166-1 alpha-2 country code schema: type: string - name: view in: query schema: type: string enum: [CATEGORY_VIEW_UNSPECIFIED, BASIC, FULL] responses: '200': description: Categories retrieved successfully content: application/json: schema: $ref: '#/components/schemas/BatchGetCategoriesResponse' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Chains v1 /v1/{name}: get: tags: [Chains] summary: Get chain description: Gets the specified chain servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: name in: path required: true description: Chain resource name (chains/{chainId}) schema: type: string responses: '200': description: Chain retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Chain' '404': description: Chain not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v1/chains:search: get: tags: [Chains] summary: Search chains description: Searches the chain based on chain name servers: - url: https://mybusinessbusinessinformation.googleapis.com parameters: - name: chainName in: query required: true description: Search query for chain name schema: type: string - name: pageSize in: query schema: type: integer responses: '200': description: Chains found successfully content: application/json: schema: $ref: '#/components/schemas/SearchChainsResponse' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # Google Locations v1 /v1/googleLocations:search: post: tags: [Google Locations] summary: Search Google locations description: Search all possible locations that match the specified request servers: - url: https://mybusinessbusinessinformation.googleapis.com requestBody: required: true content: application/json: schema: type: object properties: location: $ref: '#/components/schemas/LocationV1' query: type: string description: Text query to search for pageSize: type: integer responses: '200': description: Search results returned successfully content: application/json: schema: $ref: '#/components/schemas/SearchGoogleLocationsResponse' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] # =========================================== # Place Actions API v1 (mybusinessplaceactions.googleapis.com) # =========================================== /v1/{parent}/placeActionLinks: get: tags: [Place Actions] summary: List place action links description: Lists the place action links for the specified location servers: - url: https://mybusinessplaceactions.googleapis.com parameters: - name: parent in: path required: true description: Location resource name (locations/{locationId}) schema: type: string example: "locations/987654321" - name: filter in: query description: Filter by place action type schema: type: string example: "placeActionType=APPOINTMENT" - name: pageSize in: query description: Number of links to return schema: type: integer maximum: 100 - name: pageToken in: query description: Pagination token schema: type: string responses: '200': description: Place action links listed successfully content: application/json: schema: $ref: '#/components/schemas/ListPlaceActionLinksResponse' '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] post: tags: [Place Actions] summary: Create place action link description: Creates a place action link for the specified location servers: - url: https://mybusinessplaceactions.googleapis.com parameters: - name: parent in: path required: true description: Location resource name schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PlaceActionLink' example: placeActionType: "APPOINTMENT" uri: "https://example.com/book" responses: '200': description: Place action link created successfully content: application/json: schema: $ref: '#/components/schemas/PlaceActionLink' '400': description: Invalid request or duplicate link '404': description: Location not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v1/{name}: get: tags: [Place Actions] summary: Get place action link description: Gets the specified place action link servers: - url: https://mybusinessplaceactions.googleapis.com parameters: - name: name in: path required: true description: Place action link resource name (locations/{locationId}/placeActionLinks/{linkId}) schema: type: string responses: '200': description: Place action link retrieved successfully content: application/json: schema: $ref: '#/components/schemas/PlaceActionLink' '404': description: Place action link not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] patch: tags: [Place Actions] summary: Update place action link description: Updates the specified place action link servers: - url: https://mybusinessplaceactions.googleapis.com parameters: - name: name in: path required: true description: Place action link resource name schema: type: string - name: updateMask in: query description: Fields to update schema: type: string example: "uri" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PlaceActionLink' responses: '200': description: Place action link updated successfully content: application/json: schema: $ref: '#/components/schemas/PlaceActionLink' '400': description: Invalid request '404': description: Place action link not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] delete: tags: [Place Actions] summary: Delete place action link description: Deletes a place action link from the specified location servers: - url: https://mybusinessplaceactions.googleapis.com parameters: - name: name in: path required: true description: Place action link resource name schema: type: string responses: '200': description: Place action link deleted successfully '404': description: Place action link not found security: - OAuth2: [https://www.googleapis.com/auth/business.manage] /v1/placeActionTypeMetadata: get: tags: [Place Actions] summary: List place action type metadata description: Returns the list of available place action types for a location or country servers: - url: https://mybusinessplaceactions.googleapis.com parameters: - name: languageCode in: query description: BCP 47 language code schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string - name: filter in: query description: Filter by location name schema: type: string responses: '200': description: Place action types listed successfully content: application/json: schema: $ref: '#/components/schemas/ListPlaceActionTypeMetadataResponse' security: - OAuth2: [https://www.googleapis.com/auth/business.manage] components: securitySchemes: OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://accounts.google.com/o/oauth2/auth tokenUrl: https://oauth2.googleapis.com/token scopes: https://www.googleapis.com/auth/business.manage: Full management of Business Profile listings schemas: # Account Management Account: type: object properties: name: type: string description: Resource name of the account example: "accounts/123456789" accountName: type: string description: Human-readable name of the account example: "My Business Account" type: type: string enum: [BUSINESS, PERSONAL] description: Type of the account role: type: string enum: [OWNER, CO_OWNER, MANAGER, COMMUNICATIONS_MANAGER, SITE_MANAGER] description: User's role for the account state: type: object properties: status: type: string enum: [UNVERIFIED, VERIFIED, SUSPENDED, DISABLED] description: Account status profilePhotoUrl: type: string format: uri description: URL of the account profile photo accountNumber: type: string description: Account number for the business ListAccountsResponse: type: object properties: accounts: type: array items: $ref: '#/components/schemas/Account' nextPageToken: type: string description: Token for retrieving next page # Location Management Location: type: object properties: name: type: string description: Resource name of the location example: "accounts/123456789/locations/987654321" locationName: type: string description: Google identifier for the location primaryCategory: $ref: '#/components/schemas/Category' additionalCategories: type: array items: $ref: '#/components/schemas/Category' description: Additional business categories phoneNumbers: $ref: '#/components/schemas/PhoneNumbers' address: $ref: '#/components/schemas/PostalAddress' primaryPhone: type: string description: Primary phone number example: "+1-555-123-4567" additionalPhones: type: array items: type: string description: Additional phone numbers websiteUri: type: string format: uri description: Business website URL regularHours: $ref: '#/components/schemas/BusinessHours' specialHours: $ref: '#/components/schemas/SpecialHours' serviceArea: $ref: '#/components/schemas/ServiceAreaBusiness' locationKey: $ref: '#/components/schemas/LocationKey' labels: type: array items: type: string description: Custom labels for the location adWordsLocationExtensions: $ref: '#/components/schemas/AdWordsLocationExtensions' latlng: $ref: '#/components/schemas/LatLng' openInfo: $ref: '#/components/schemas/OpenInfo' metadata: $ref: '#/components/schemas/Metadata' Category: type: object properties: categoryId: type: string description: Category identifier example: "gcid:restaurant" displayName: type: string description: Human-readable category name PostalAddress: type: object properties: regionCode: type: string description: Country code example: "US" languageCode: type: string description: Language code example: "en" postalCode: type: string description: Postal/ZIP code example: "90210" sortingCode: type: string description: Sorting code for mail administrativeArea: type: string description: State or province example: "CA" locality: type: string description: City or locality example: "Beverly Hills" sublocality: type: string description: Sublocality or district addressLines: type: array items: type: string description: Street address lines example: ["123 Main St", "Suite 100"] recipients: type: array items: type: string description: Recipients for mail delivery organization: type: string description: Organization name BusinessHours: type: object properties: periods: type: array items: $ref: '#/components/schemas/TimePeriod' description: Regular business hours TimePeriod: type: object properties: openDay: type: string enum: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY] description: Day of the week when period starts openTime: type: string description: Opening time (24-hour format) pattern: "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$" example: "09:00" closeDay: type: string enum: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY] description: Day of the week when period ends closeTime: type: string description: Closing time (24-hour format) pattern: "^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$" example: "17:00" SpecialHours: type: object properties: specialHourPeriods: type: array items: $ref: '#/components/schemas/SpecialHourPeriod' description: Special hours periods SpecialHourPeriod: type: object properties: startDate: $ref: '#/components/schemas/Date' endDate: $ref: '#/components/schemas/Date' openTime: type: string description: Opening time closeTime: type: string description: Closing time closed: type: boolean description: Whether the business is closed during this period Date: type: object properties: year: type: integer description: Year example: 2026 month: type: integer description: Month (1-12) example: 2 day: type: integer description: Day of month example: 15 LatLng: type: object properties: latitude: type: number description: Latitude coordinate example: 34.0522 longitude: type: number description: Longitude coordinate example: -118.2437 # Local Posts LocalPost: type: object properties: name: type: string description: Resource name of the local post languageCode: type: string description: Language code example: "en-US" summary: type: string description: Summary text of the post callToAction: $ref: '#/components/schemas/CallToAction' createTime: type: string format: date-time description: Creation timestamp updateTime: type: string format: date-time description: Last update timestamp event: $ref: '#/components/schemas/LocalPostEvent' offer: $ref: '#/components/schemas/LocalPostOffer' media: type: array items: $ref: '#/components/schemas/MediaItem' description: Media items attached to the post topicType: type: string enum: [EVENT, OFFER, ALERT] description: Type of local post alertType: type: string enum: [ALERT_TYPE_UNSPECIFIED, TEMPORARY_CLOSURE, REOPENING, MODIFIED_HOURS, OWNER_VERIFICATION_REQUIRED, HOLIDAY_CLOSURE, WEATHER_CLOSURE, OTHER_CLOSURE, PHONE_OUT_OF_ORDER] description: Alert type for alert posts state: type: string enum: [PENDING, LIVE, EXPIRED, REJECTED] description: State of the local post LocalPostEvent: type: object properties: title: type: string description: Event title schedule: $ref: '#/components/schemas/LocalPostSchedule' LocalPostOffer: type: object properties: offerType: type: string enum: [OFFER_TYPE_UNSPECIFIED, OFFER, BUY_ONE_GET_ONE] description: Type of offer redeemOnlineUrl: type: string format: uri description: URL for online redemption termsConditions: type: string description: Terms and conditions couponCode: type: string description: Coupon code LocalPostSchedule: type: object properties: startDate: $ref: '#/components/schemas/Date' startTime: $ref: '#/components/schemas/TimeOfDay' endDate: $ref: '#/components/schemas/Date' endTime: $ref: '#/components/schemas/TimeOfDay' TimeOfDay: type: object properties: hours: type: integer minimum: 0 maximum: 23 minutes: type: integer minimum: 0 maximum: 59 seconds: type: integer minimum: 0 maximum: 59 nanos: type: integer minimum: 0 maximum: 999999999 CallToAction: type: object properties: actionType: type: string enum: [BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, CALL] description: Type of action url: type: string format: uri description: Action URL # Media MediaItem: type: object properties: name: type: string description: Resource name of the media item mediaFormat: type: string enum: [PHOTO, VIDEO] description: Format of the media sourceUrl: type: string format: uri description: Source URL of the media thumbnailUrl: type: string format: uri description: Thumbnail URL googleUrl: type: string format: uri description: Google-hosted URL readOnly: true description: type: string description: Description of the media createTime: type: string format: date-time description: Creation timestamp attribution: $ref: '#/components/schemas/Attribution' locationAssociation: $ref: '#/components/schemas/LocationAssociation' dimensions: $ref: '#/components/schemas/Dimensions' Attribution: type: object properties: profileName: type: string description: Profile name of the contributor profilePhotoUrl: type: string format: uri description: Profile photo URL profileUrl: type: string format: uri description: Profile URL takedownUrl: type: string format: uri description: Takedown URL LocationAssociation: type: object properties: category: type: string enum: [CATEGORY_UNSPECIFIED, COVER, PROFILE, LOGO, EXTERIOR, INTERIOR, PRODUCT, FOOD_AND_DRINK, MENU, COMMON_AREA, ROOMS, TEAMS, AT_WORK, ADDITIONAL] description: Category of media association Dimensions: type: object properties: widthPixels: type: integer description: Width in pixels heightPixels: type: integer description: Height in pixels MediaItemDataRef: type: object properties: resourceName: type: string description: Resource name for upload # Reviews Review: type: object properties: name: type: string description: Resource name of the review reviewId: type: string description: Unique review identifier reviewer: $ref: '#/components/schemas/Reviewer' starRating: type: string enum: [ONE, TWO, THREE, FOUR, FIVE] description: Star rating comment: type: string description: Review comment text createTime: type: string format: date-time description: Review creation time updateTime: type: string format: date-time description: Last update time reviewReply: $ref: '#/components/schemas/Reply' Reviewer: type: object properties: profilePhotoUrl: type: string format: uri description: Profile photo URL displayName: type: string description: Display name isAnonymous: type: boolean description: Whether reviewer is anonymous Reply: type: object properties: comment: type: string description: Reply comment text updateTime: type: string format: date-time description: Reply update time # Questions and Answers Question: type: object properties: name: type: string description: Resource name of the question author: $ref: '#/components/schemas/Author' upvoteCount: type: integer description: Number of upvotes text: type: string description: Question text createTime: type: string format: date-time description: Creation time updateTime: type: string format: date-time description: Last update time topAnswers: type: array items: $ref: '#/components/schemas/Answer' description: Top answers for the question totalAnswerCount: type: integer description: Total number of answers Answer: type: object properties: name: type: string description: Resource name of the answer author: $ref: '#/components/schemas/Author' upvoteCount: type: integer description: Number of upvotes text: type: string description: Answer text createTime: type: string format: date-time description: Creation time updateTime: type: string format: date-time description: Last update time Author: type: object properties: displayName: type: string description: Display name profilePhotoUrl: type: string format: uri description: Profile photo URL type: type: string enum: [REGULAR_USER, LOCAL_GUIDE, MERCHANT] description: Type of author # Insights and Analytics ReportInsightsRequest: type: object properties: locationNames: type: array items: type: string description: Location resource names for insights basicRequest: $ref: '#/components/schemas/BasicMetricsRequest' drivingDirectionsRequest: $ref: '#/components/schemas/DrivingDirectionMetricsRequest' BasicMetricsRequest: type: object properties: metricRequests: type: array items: $ref: '#/components/schemas/MetricRequest' timeRange: $ref: '#/components/schemas/TimeRange' MetricRequest: type: object properties: metric: type: string enum: [ 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 ] description: Metric to request options: type: array items: type: string enum: [AGGREGATION_METHOD_DAILY_VALUES, AGGREGATION_METHOD_TOTAL] description: Options for the metric TimeRange: type: object properties: startTime: type: string format: date-time description: Start time for the range endTime: type: string format: date-time description: End time for the range ReportInsightsResponse: type: object properties: locationMetrics: type: array items: $ref: '#/components/schemas/LocationMetrics' description: Metrics by location locationDrivingDirectionMetrics: type: array items: $ref: '#/components/schemas/LocationDrivingDirectionMetrics' description: Driving direction metrics by location LocationMetrics: type: object properties: locationName: type: string description: Location resource name timeZone: type: string description: Location time zone metricValues: type: array items: $ref: '#/components/schemas/MetricValue' description: Metric values for the location MetricValue: type: object properties: metric: type: string description: Metric name totalValue: $ref: '#/components/schemas/DimensionalMetricValue' dimensionalValues: type: array items: $ref: '#/components/schemas/DimensionalMetricValue' description: Dimensional breakdown of metric values DimensionalMetricValue: type: object properties: metricOption: type: string description: Metric option value: type: string description: Metric value timeDimension: $ref: '#/components/schemas/TimeDimension' TimeDimension: type: object properties: timeRange: $ref: '#/components/schemas/TimeRange' dayOfWeek: type: string enum: [DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY] hourOfDay: type: integer minimum: 0 maximum: 23 # Verification VerifyLocationRequest: type: object properties: verificationMethod: type: string enum: [VERIFICATION_METHOD_UNSPECIFIED, ADDRESS, EMAIL, PHONE_CALL, SMS, AUTO, VETTED_PARTNER] description: Verification method to use languageCode: type: string description: Language code for verification example: "en-US" mailerContact: type: object properties: contactName: type: string description: Contact name for mailed verification phoneNumber: type: string description: Phone number for verification contact context: type: object properties: address: $ref: '#/components/schemas/PostalAddress' mapLocation: $ref: '#/components/schemas/LatLng' VerifyLocationResponse: type: object properties: verification: $ref: '#/components/schemas/Verification' Verification: type: object properties: name: type: string description: Resource name of the verification method: type: string enum: [VERIFICATION_METHOD_UNSPECIFIED, ADDRESS, EMAIL, PHONE_CALL, SMS, AUTO, VETTED_PARTNER] description: Verification method used state: type: string enum: [PENDING, COMPLETED, FAILED] description: Current verification state createTime: type: string format: date-time description: Creation time FetchVerificationOptionsResponse: type: object properties: verificationOptions: type: array items: $ref: '#/components/schemas/VerificationOption' description: Available verification options VerificationOption: type: object properties: verificationMethod: type: string enum: [VERIFICATION_METHOD_UNSPECIFIED, ADDRESS, EMAIL, PHONE_CALL, SMS, AUTO, VETTED_PARTNER] description: Verification method phoneNumber: type: string description: Phone number for SMS/call verification address: $ref: '#/components/schemas/PostalAddress' # Common Response Objects ListLocationsResponse: type: object properties: locations: type: array items: $ref: '#/components/schemas/Location' nextPageToken: type: string totalSize: type: integer ListLocalPostsResponse: type: object properties: localPosts: type: array items: $ref: '#/components/schemas/LocalPost' nextPageToken: type: string ListMediaItemsResponse: type: object properties: mediaItems: type: array items: $ref: '#/components/schemas/MediaItem' nextPageToken: type: string totalMediaItemsCount: type: integer ListReviewsResponse: type: object properties: reviews: type: array items: $ref: '#/components/schemas/Review' nextPageToken: type: string totalReviewCount: type: integer averageRating: type: number description: Average star rating ListQuestionsResponse: type: object properties: questions: type: array items: $ref: '#/components/schemas/Question' nextPageToken: type: string totalSize: type: integer ListCategoriesResponse: type: object properties: categories: type: array items: $ref: '#/components/schemas/Category' nextPageToken: type: string # Additional Schemas PhoneNumbers: type: object properties: primaryPhone: type: string description: Primary phone number additionalPhones: type: array items: type: string description: Additional phone numbers ServiceAreaBusiness: type: object properties: businessType: type: string enum: [CUSTOMER_LOCATION_ONLY, CUSTOMER_AND_BUSINESS_LOCATION] description: Type of service area business places: type: object properties: placeInfos: type: array items: type: object properties: name: type: string placeId: type: string description: Service area places LocationKey: type: object properties: placeId: type: string description: Google Place ID plusPageId: type: string description: Google+ page ID requestId: type: string description: Request identifier AdWordsLocationExtensions: type: object properties: adPhone: type: string description: Phone number for ads OpenInfo: type: object properties: status: type: string enum: [OPEN, CLOSED, SPECIAL_HOURS] description: Current open status canReopen: type: boolean description: Whether location can reopen openingDate: $ref: '#/components/schemas/Date' Metadata: type: object properties: duplicate: type: object properties: locationName: type: string description: Name of duplicate location mapsUrl: type: string format: uri description: Google Maps URL newReviewUrl: type: string format: uri description: URL for leaving new reviews LocationDrivingDirectionMetrics: type: object properties: locationName: type: string timeZone: type: string topDirectionSources: type: array items: type: object properties: dayCount: type: integer regionCount: type: integer DrivingDirectionMetricsRequest: type: object properties: languageCode: type: string numDays: type: string enum: [SEVEN, THIRTY] # =========================================== # Food Menus Schemas # =========================================== FoodMenus: type: object description: Container for food menus for a location properties: name: type: string description: Resource name (accounts/{accountId}/locations/{locationId}/foodMenus) menus: type: array items: $ref: '#/components/schemas/FoodMenu' FoodMenu: type: object description: Represents a single food menu properties: labels: type: array items: $ref: '#/components/schemas/MenuLabel' sourceUrl: type: string format: uri description: URL where this menu can be found sections: type: array items: $ref: '#/components/schemas/FoodMenuSection' cuisines: type: array items: type: string enum: [CUISINE_UNSPECIFIED, AMERICAN, ASIAN, BRAZILIAN, CHINESE, FRENCH, GREEK, INDIAN, ITALIAN, JAPANESE, KOREAN, MEDITERRANEAN, MEXICAN, MIDDLE_EASTERN, THAI, VIETNAMESE, OTHER] MenuLabel: type: object description: Label with language code properties: displayName: type: string description: Display name for the menu description: type: string description: Description text languageCode: type: string description: BCP 47 language code FoodMenuSection: type: object description: Section of a food menu properties: labels: type: array items: $ref: '#/components/schemas/MenuLabel' items: type: array items: $ref: '#/components/schemas/FoodMenuItem' FoodMenuItem: type: object description: Individual food menu item required: - labels properties: labels: type: array items: $ref: '#/components/schemas/MenuLabel' attributes: $ref: '#/components/schemas/FoodMenuItemAttributes' options: type: array items: $ref: '#/components/schemas/FoodMenuItemOption' FoodMenuItemAttributes: type: object description: Attributes of a food menu item properties: price: $ref: '#/components/schemas/Money' spiciness: type: string enum: [SPICINESS_UNSPECIFIED, MILD, MEDIUM, HOT] allergen: type: array items: type: string enum: [ALLERGEN_UNSPECIFIED, DAIRY, EGG, FISH, PEANUTS, SHELLFISH, SOY, TREE_NUTS, WHEAT, GLUTEN, SESAME, SULFITES] dietaryRestriction: type: array items: type: string enum: [DIETARY_RESTRICTION_UNSPECIFIED, HALAL, KOSHER, ORGANIC, VEGAN, VEGETARIAN, GLUTEN_FREE] nutritionFacts: $ref: '#/components/schemas/NutritionFacts' ingredients: type: array items: $ref: '#/components/schemas/MenuLabel' servesNumPeople: type: integer preparationMethods: type: array items: type: string enum: [PREPARATION_METHOD_UNSPECIFIED, BAKED, BARBECUED, BRAISED, BREADED, BROILED, DEEP_FRIED, FRIED, GRILLED, POACHED, ROASTED, SAUTEED, SMOKED, STEAMED, STIR_FRIED] portionSize: $ref: '#/components/schemas/PortionSize' mediaKeys: type: array items: type: string description: Media keys for photos of this item FoodMenuItemOption: type: object description: Option/variation for a food menu item properties: labels: type: array items: $ref: '#/components/schemas/MenuLabel' attributes: $ref: '#/components/schemas/FoodMenuItemAttributes' Money: type: object description: Represents an amount of money with currency properties: currencyCode: type: string description: ISO 4217 currency code units: type: string description: Whole units of the amount nanos: type: integer description: Nano units (10^-9) of the amount NutritionFacts: type: object description: Nutrition information for a food item properties: calories: $ref: '#/components/schemas/CaloriesFact' totalFat: $ref: '#/components/schemas/NutritionFact' cholesterol: $ref: '#/components/schemas/NutritionFact' sodium: $ref: '#/components/schemas/NutritionFact' totalCarbohydrate: $ref: '#/components/schemas/NutritionFact' protein: $ref: '#/components/schemas/NutritionFact' CaloriesFact: type: object properties: lowerAmount: type: integer upperAmount: type: integer unit: type: string enum: [CALORIE, JOULE] NutritionFact: type: object properties: lowerAmount: type: number upperAmount: type: number unit: type: string enum: [GRAM, MILLIGRAM] PortionSize: type: object properties: quantity: type: number unit: $ref: '#/components/schemas/MenuLabel' # =========================================== # Business Information v1 Schemas # =========================================== LocationV1: type: object description: Location in v1 API format properties: name: type: string description: Resource name (locations/{locationId}) title: type: string description: Location name as displayed to users phoneNumbers: $ref: '#/components/schemas/PhoneNumbers' categories: $ref: '#/components/schemas/CategoriesV1' storefrontAddress: $ref: '#/components/schemas/PostalAddress' websiteUri: type: string format: uri regularHours: $ref: '#/components/schemas/BusinessHours' specialHours: $ref: '#/components/schemas/SpecialHours' serviceArea: $ref: '#/components/schemas/ServiceArea' labels: type: array items: type: string adWordsLocationExtensions: $ref: '#/components/schemas/AdWordsLocationExtensions' latlng: $ref: '#/components/schemas/LatLng' openInfo: $ref: '#/components/schemas/OpenInfo' metadata: $ref: '#/components/schemas/LocationMetadataV1' profile: $ref: '#/components/schemas/Profile' relationshipData: $ref: '#/components/schemas/RelationshipData' moreHours: type: array items: $ref: '#/components/schemas/MoreHours' serviceItems: type: array items: $ref: '#/components/schemas/ServiceItem' CategoriesV1: type: object properties: primaryCategory: $ref: '#/components/schemas/CategoryV1' additionalCategories: type: array items: $ref: '#/components/schemas/CategoryV1' CategoryV1: type: object properties: name: type: string description: Resource name (categories/{categoryId}) displayName: type: string serviceTypes: type: array items: $ref: '#/components/schemas/ServiceType' moreHoursTypes: type: array items: $ref: '#/components/schemas/MoreHoursType' ServiceType: type: object properties: serviceTypeId: type: string displayName: type: string MoreHoursType: type: object properties: hoursTypeId: type: string displayName: type: string localizedDisplayName: type: string PostalAddress: type: object description: Physical address properties: regionCode: type: string description: CLDR region code languageCode: type: string postalCode: type: string administrativeArea: type: string locality: type: string addressLines: type: array items: type: string recipients: type: array items: type: string ServiceArea: type: object properties: businessType: type: string enum: [BUSINESS_TYPE_UNSPECIFIED, CUSTOMER_LOCATION_ONLY, CUSTOMER_AND_BUSINESS_LOCATION] places: type: object properties: placeInfos: type: array items: type: object properties: placeName: type: string placeId: type: string regionCode: type: string LatLng: type: object properties: latitude: type: number longitude: type: number LocationMetadataV1: type: object properties: mapsUri: type: string format: uri newReviewUri: type: string format: uri canDelete: type: boolean canOperateLocalPost: type: boolean canModifyServiceList: type: boolean canHaveFoodMenus: type: boolean canOperateHealthData: type: boolean canOperateLodgingData: type: boolean placeId: type: string duplicateLocation: type: string hasGoogleUpdated: type: boolean hasPendingEdits: type: boolean canHaveBusinessCalls: type: boolean hasVoiceOfMerchant: type: boolean Profile: type: object properties: description: type: string RelationshipData: type: object properties: parentLocation: $ref: '#/components/schemas/RelevantLocation' childrenLocations: type: array items: $ref: '#/components/schemas/RelevantLocation' parentChain: type: string description: Chain resource name RelevantLocation: type: object properties: placeId: type: string relationType: type: string enum: [RELATION_TYPE_UNSPECIFIED, DEPARTMENT_OF, INDEPENDENT_ESTABLISHMENT_IN] MoreHours: type: object properties: hoursTypeId: type: string periods: type: array items: $ref: '#/components/schemas/TimePeriod' ServiceItem: type: object properties: structuredServiceItem: $ref: '#/components/schemas/StructuredServiceItem' freeFormServiceItem: $ref: '#/components/schemas/FreeFormServiceItem' price: $ref: '#/components/schemas/Money' StructuredServiceItem: type: object properties: serviceTypeId: type: string description: type: string FreeFormServiceItem: type: object properties: category: type: string label: $ref: '#/components/schemas/MenuLabel' SpecialHours: type: object properties: specialHourPeriods: type: array items: $ref: '#/components/schemas/SpecialHourPeriod' SpecialHourPeriod: type: object properties: startDate: $ref: '#/components/schemas/Date' openTime: $ref: '#/components/schemas/TimeOfDay' endDate: $ref: '#/components/schemas/Date' closeTime: $ref: '#/components/schemas/TimeOfDay' closed: type: boolean TimeOfDay: type: object properties: hours: type: integer minimum: 0 maximum: 23 minutes: type: integer minimum: 0 maximum: 59 seconds: type: integer nanos: type: integer ListLocationsResponseV1: type: object properties: locations: type: array items: $ref: '#/components/schemas/LocationV1' nextPageToken: type: string totalSize: type: integer # Attributes Schemas Attributes: type: object description: Container for location attributes properties: name: type: string description: Resource name (locations/{locationId}/attributes) attributes: type: array items: $ref: '#/components/schemas/Attribute' Attribute: type: object properties: name: type: string description: Attribute ID valueType: type: string enum: [ATTRIBUTE_VALUE_TYPE_UNSPECIFIED, BOOL, ENUM, URL, REPEATED_ENUM] values: type: array items: type: object repeatedEnumValue: $ref: '#/components/schemas/RepeatedEnumValue' uriValues: type: array items: $ref: '#/components/schemas/UriAttributeValue' RepeatedEnumValue: type: object properties: setValues: type: array items: type: string unsetValues: type: array items: type: string UriAttributeValue: type: object properties: uri: type: string format: uri ListAttributeMetadataResponse: type: object properties: attributeMetadata: type: array items: $ref: '#/components/schemas/AttributeMetadata' nextPageToken: type: string AttributeMetadata: type: object properties: parent: type: string attributeId: type: string displayName: type: string groupDisplayName: type: string valueType: type: string enum: [ATTRIBUTE_VALUE_TYPE_UNSPECIFIED, BOOL, ENUM, URL, REPEATED_ENUM] valueMetadata: type: array items: $ref: '#/components/schemas/AttributeValueMetadata' deprecated: type: boolean AttributeValueMetadata: type: object properties: value: type: object displayName: type: string # Chains Schemas Chain: type: object properties: name: type: string description: Resource name (chains/{chainId}) chainNames: type: array items: $ref: '#/components/schemas/ChainName' websites: type: array items: $ref: '#/components/schemas/ChainUri' locationCount: type: integer ChainName: type: object properties: displayName: type: string languageCode: type: string ChainUri: type: object properties: uri: type: string format: uri SearchChainsResponse: type: object properties: chains: type: array items: $ref: '#/components/schemas/Chain' # Google Locations Schemas SearchGoogleLocationsResponse: type: object properties: googleLocations: type: array items: $ref: '#/components/schemas/GoogleLocation' GoogleLocation: type: object properties: name: type: string location: $ref: '#/components/schemas/LocationV1' requestAdminRightsUri: type: string format: uri BatchGetCategoriesResponse: type: object properties: categories: type: array items: $ref: '#/components/schemas/CategoryV1' # =========================================== # Place Actions Schemas # =========================================== PlaceActionLink: type: object description: A link to trigger a place action properties: name: type: string description: Resource name (locations/{locationId}/placeActionLinks/{linkId}) providerType: type: string enum: [PROVIDER_TYPE_UNSPECIFIED, MERCHANT, AGGREGATOR_3P] readOnly: true isEditable: type: boolean readOnly: true uri: type: string format: uri description: URI to the place action placeActionType: type: string enum: [PLACE_ACTION_TYPE_UNSPECIFIED, APPOINTMENT, ONLINE_APPOINTMENT, DINING_RESERVATION, FOOD_ORDERING, FOOD_DELIVERY, FOOD_TAKEOUT, SHOP_ONLINE] isPreferred: type: boolean description: Whether this is the preferred link for the action type createTime: type: string format: date-time readOnly: true updateTime: type: string format: date-time readOnly: true ListPlaceActionLinksResponse: type: object properties: placeActionLinks: type: array items: $ref: '#/components/schemas/PlaceActionLink' nextPageToken: type: string ListPlaceActionTypeMetadataResponse: type: object properties: placeActionTypeMetadata: type: array items: $ref: '#/components/schemas/PlaceActionTypeMetadata' nextPageToken: type: string PlaceActionTypeMetadata: type: object properties: placeActionType: type: string enum: [PLACE_ACTION_TYPE_UNSPECIFIED, APPOINTMENT, ONLINE_APPOINTMENT, DINING_RESERVATION, FOOD_ORDERING, FOOD_DELIVERY, FOOD_TAKEOUT, SHOP_ONLINE] displayName: type: string security: - OAuth2: [https://www.googleapis.com/auth/business.manage] tags: - name: Accounts description: Business account management and administration - name: Locations description: Business location creation, updates, and management (v4 API) - name: Locations v1 description: Location management via Business Information API v1 (mybusinessbusinessinformation.googleapis.com) - name: Local Posts description: Local post creation and management for business promotion - name: Media description: Photo and video upload and management - name: Reviews description: Customer review management and response handling - name: Q&A description: Customer questions and answers management - name: Insights description: Business performance analytics and insights - name: Categories description: Business category information and management - name: Verification description: Business location verification process - name: Food Menus description: Food menu management for restaurant locations (v4 API) - name: Attributes description: Location attributes management via Business Information API v1 - name: Chains description: Business chain information via Business Information API v1 - name: Google Locations description: Search for Google locations via Business Information API v1 - name: Place Actions description: Place action links for appointments, reservations, ordering (mybusinessplaceactions.googleapis.com)