Sprawdzanie stanu zmian dotyczących lokalizacji i atrybutów

Gdy aktualizujesz informacje o firmie za pomocą interfejsu My Business Business Information API lub interfejsu Profilu Firmy, zmiany przechodzą przez proces moderacji i weryfikacji, zanim pojawią się w wyszukiwarce i Mapach Google. Dodatkowo Google może aktualizować dane firmy na podstawie zgłoszeń użytkowników lub licencjonowanych źródeł danych.

Punkty końcowe v1alpha Edit Status umożliwiają pobranie ujednoliconego widoku lokalizacji lub jej atrybutów w jednym żądaniu:

  • Dane podane przez sprzedawcę: wartości przesłane ostatnio przez sprzedawcę.
  • Dane przeznaczone dla użytkowników: wartości są widoczne w wyszukiwarce Google i Mapach.
  • Rozszerzone metadane pól: stan edycji poszczególnych pól lub atrybutów, w tym etap cyklu życia ostatniej zmiany, źródło (API lub UI), sygnatura czasowa ostatniej zmiany i przyczyna naruszenia zasad, jeśli zmiana została odrzucona.

Zanim zaczniesz

Zanim zaczniesz korzystać z My Business Business Information API, zarejestruj aplikację i uzyskaj dane logowania OAuth 2.0. Szczegółowe informacje o tym, jak zacząć, znajdziesz w artykule Konfiguracja podstawowa.

Pobieranie rozszerzonych danych o lokalizacji

Aby sprawdzić dane o lokalizacji podane przez sprzedawcę, dane o lokalizacji przeznaczone dla użytkowników i stan edycji poszczególnych pól lokalizacji, wywołaj metodę locations.getExtended.

W przeciwieństwie do locations.get metoda locations.getExtended nie wymaga parametru readMask i zwraca pełny zasób ExtendedLocation.

Żądanie

HTTP
GET https://mybusinessbusinessinformation.googleapis.com/v1alpha/locations/{locationId}:getExtended

Odpowiedź

Odpowiedź zawiera 3 pola najwyższego poziomu:

  • locationProvidedByMerchant: dane Location zarządzane przez sprzedawcę.
  • locationSeenByConsumers: dane Location widoczne dla konsumentów w wyszukiwarce i Mapach Google.
  • extendedFieldData: mapa nazw pól Location najwyższego poziomu w snake_case (takich jak title, phone_numbers, website_uri, storefront_address lub regular_hours) do obiektów ExtendedFieldData. Klucze są zawsze zwykłymi nazwami pól najwyższego poziomu, nigdy zagnieżdżonymi podpolami.
{
  "locationProvidedByMerchant": {
    "name": "locations/{locationId}",
    "title": "Example Coffee Roasters - Best Coffee in Sydney",
    "phoneNumbers": {
      "primaryPhone": "02 5550 1234"
    },
    "websiteUri": "https://www.example.com/"
  },
  "locationSeenByConsumers": {
    "name": "locations/{locationId}",
    "title": "Example Coffee Roasters",
    "phoneNumbers": {
      "primaryPhone": "+61 2 5550 1234"
    },
    "websiteUri": "https://www.example.com/"
  },
  "extendedFieldData": {
    "title": {
      "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_REJECTED",
      "rejectionReason": "MISREPRESENTATION",
      "updateTime": "2026-09-25T08:00:00Z",
      "source": "SOURCE_API"
    },
    "phone_numbers": {
      "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_UPDATED_BY_GOOGLE",
      "updateTime": "2026-09-20T14:15:00Z",
      "source": "SOURCE_UI"
    },
    "website_uri": {
      "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_ACCEPTED",
      "updateTime": "2026-09-15T10:30:00Z",
      "source": "SOURCE_API"
    }
  }
}

Pobieranie danych atrybutów rozszerzonych

Aby sprawdzić wartości podane przez sprzedawcę, wartości przeznaczone dla użytkowników i stan edycji atrybutów lokalizacji, wywołaj metodę locations.attributes.getExtended.

Żądanie

HTTP
GET https://mybusinessbusinessinformation.googleapis.com/v1alpha/locations/{locationId}/attributes:getExtended

Odpowiedź

Odpowiedź zwraca zasób ExtendedAttributes zawierający listę wpisów ExtendedAttribute. Każdy wpis łączy attributeProvidedByMerchant i attributeSeenByConsumers z obiektem extendedFieldData dla tego atrybutu:

{
  "name": "locations/{locationId}/attributes",
  "extendedAttributes": [
    {
      "attributeProvidedByMerchant": {
        "name": "attributes/has_wheelchair_accessible_entrance",
        "valueType": "BOOL",
        "values": [
          true
        ]
      },
      "attributeSeenByConsumers": {
        "name": "attributes/has_wheelchair_accessible_entrance",
        "valueType": "BOOL",
        "values": [
          true
        ]
      },
      "extendedFieldData": {
        "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_ACCEPTED",
        "updateTime": "2026-09-10T12:00:00Z",
        "source": "SOURCE_API"
      }
    },
    {
      "attributeProvidedByMerchant": {
        "name": "attributes/wi_fi",
        "valueType": "ENUM",
        "values": [
          "free_wi_fi"
        ]
      },
      "attributeSeenByConsumers": {
        "name": "attributes/wi_fi",
        "valueType": "ENUM",
        "values": [
          "paid_wi_fi"
        ]
      },
      "extendedFieldData": {
        "lastEditLifecycleStage": "EDIT_LIFECYCLE_STAGE_PENDING",
        "updateTime": "2026-09-28T16:45:00Z",
        "source": "SOURCE_API"
      }
    }
  ]
}

Omówienie rozszerzonych metadanych pól

Każdy obiekt ExtendedFieldData zawiera te pola:

Pole Typ Opis
lastEditLifecycleStage EditLifecycleStage Stan moderowania lub wyświetlania ostatniej zmiany w tym polu lub atrybucie.
rejectionReason PolicyViolation Naruszenie zasad, które spowodowało odrzucenie zmiany. Wypełniane, gdy lastEditLifecycleStage to EDIT_LIFECYCLE_STAGE_REJECTED.
updateTime string (Timestamp) Sygnatura czasowa ostatniej zmiany tego pola lub atrybutu (format RFC 3339).
source Source Platforma, na której sprzedawca przesłał zmianę (SOURCE_API lub SOURCE_UI).

Edytowanie etapów cyklu życia

Typ wyliczeniowy EditLifecycleStage wskazuje, na jakim etapie cyklu życia znajduje się zmiana:

Wartość Opis Zalecane działanie
EDIT_LIFECYCLE_STAGE_ACCEPTED Zmiana wprowadzona przez sprzedawcę została zatwierdzona i może być wyświetlana. Nie trzeba nic robić.
EDIT_LIFECYCLE_STAGE_PENDING Zmiana wprowadzona przez sprzedawcę jest w trakcie sprawdzania i nie została jeszcze zastosowana w informacjach o produkcie przeznaczonych dla użytkowników. Poczekaj na zakończenie moderowania. Nie przesyłaj wielokrotnie tych samych zmian, gdy oczekują one na sprawdzenie.
EDIT_LIFECYCLE_STAGE_REJECTED Zmiana wprowadzona przez sprzedawcę nie została zaakceptowana. Sprawdź rejectionReason, aby uzyskać konkretną wartość PolicyViolation. Usuń naruszenie zasad i prześlij nową aktualizację za pomocą locations.patch lub locations.updateAttributes.
EDIT_LIFECYCLE_STAGE_UPDATED_BY_GOOGLE Wartość widoczna dla klientów została zaktualizowana przez Google (np. na podstawie zgłoszeń użytkowników lub źródeł zewnętrznych) i różni się od wartości podanej przez sprzedawcę. Sprawdź wartość locationSeenByConsumers lub attributeSeenByConsumers i zaakceptuj ją lub zastąp. Zobacz Zarządzanie aktualizacjami Google.
EDIT_LIFECYCLE_STAGE_DRAFT Zmiana została zapisana jako wersja robocza (np. w niezweryfikowanej lokalizacji) i nie jest widoczna w wyszukiwarce Google ani Mapach Google. Przejdź weryfikację lokalizacji, aby wizytówka mogła zostać opublikowana.
EDIT_LIFECYCLE_STAGE_UNSPECIFIED Etap cyklu życia zmiany jest nieznany lub nieokreślony. Brak.

Edytowanie źródeł

Typ wyliczeniowy Source określa kanał, za pomocą którego sprzedawca przesłał zmianę:

  • SOURCE_API: zmiana została przesłana za pomocą interfejsu My Business Business Information API.
  • SOURCE_UI: zmiana została przesłana przez interfejs internetowy lub aplikację mobilną Profilu Firmy.
  • SOURCE_UNSPECIFIED: nie określono źródła zmiany.

Naruszenia zasad

Gdy pole lastEditLifecycleStage ma wartość EDIT_LIFECYCLE_STAGE_REJECTED, pole rejectionReason zawiera wartość typu wyliczeniowego PolicyViolation, która wyjaśnia, dlaczego zmiana została odrzucona. Przyczyny odrzucenia obejmują te obszary (przykłady):

  • Stan profilu i konta: ACCOUNT_RESTRICTED_AND_SUSPENDED, ACCOUNT_RESTRICTED_AND_EDIT_REJECTED, ASSOCIATED_ACCOUNT_SUSPENDED, BUSINESS_INELIGIBLE, LOCATION_SUSPENDED, LOCATION_VERIFICATION_REQUIRED, OWNERSHIP_REVOKED, PO_BOX.
  • Ograniczenia edycji: EDITING_RESTRICTION, ILLEGAL_BUSINESS_HOURS_EDIT, IDENTITY_CHANGE, GEOGRAPHIC_LOCATION_CHANGE.
  • Polityka treści: MISREPRESENTATION, OFF_TOPIC, PERSONAL_INFO, GIBBERISH_AND_REPETITIVE, OBSCENITY_AND_PROFANITY, GENERIC_QUALITY.

Pełną listę wartości i opisów typów wyliczeniowych znajdziesz w dokumentacji referencyjnej PolicyViolation.