Bir konumun ayrıntılarını ve çalışma saatlerini güncelleyin

İletişim bilgilerini değiştirin; tek seferlik istisnalı tam haftalık saatleri yayımlayın, geçici kapanış ve Google kategorileri belirleyip sonucu okuyun.

POST /locations/update kısmi güncelleme yapar. Tüm alanlar input altında yer alır, zorunlu olan tek alan input.id alanıdır ve göndermediğiniz alanlar mevcut değerlerini korur. Aşağıdaki her bölüm yalnızca JSON istek gövdesini değiştirir.

1. Telefon numarasını ve web sitesini güncelleyin

id ile birlikte değiştirilecek alanları gönderin. Yayın platformları bizUrl değerini web sitesi URL'si olarak yayımlar. Python SDK'sındaki locations.update(), camelCase anahtarlarını içeren bir dict alır; Node SDK'sındaki updateLocation() ise aynı nesneyi alır.

Phone and website
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "id": "TG9jYXRpb246MTgwMDI4OQ==",    "phone": "5125550199",    "bizUrl": "https://acmekitchen.example.com"  }}'
JSON
{  "data": {    "updateLocation": {      "success": true,      "errors": null,      "location": {        "id": "TG9jYXRpb246MTgwMDI4OQ==",        "databaseId": 1800289,        "name": "Jenny Home",        "phone": "5125550199",        "status": "APPROVED"      }    }  }}

Doğrulama başarısız olduğunda da HTTP 200 döndürülür; yanıtta success: false bulunur ve neden data.updateLocation.errors içinde belirtilir, bu nedenle durum kodu yerine success değerini kontrol edin. Her iki SDK da bu durumda ValidationError hatasını fırlatır.

2. Haftalık çalışma saatlerini ayarlayın

businessHours, haftanın her günü için bir öğe içeren bir dizidir. Her zaman yedi öğenin tamamını gönderin ve kapalı bir günü atlamak yerine type: "CLOSED" ve boş bir slots dizisiyle belirtin. Aynı gün içindeki zaman aralıkları çakışmamalıdır.

AlanDeğerlerNotlar
dayMONDAY ile SUNDAY arası veya SPECIALSPECIAL, specialDate içindeki tarih için tek seferlik bir istisnadır.
typeOPEN veya CLOSEDÇalışılmayan bir gün için CLOSED ile slots: [] değerlerini birlikte kullanın.
slots[].start, slots[].end09:00am, 05:00pmam veya pm ile 12 saatlik biçimde saatler. Bölünmüş vardiyalar için bir günde birden fazla zaman aralığına izin verilir.
specialDateYYYY-MM-DDYalnızca bir SPECIAL öğesinde kullanılır; haftanın yedi gününe ait öğelerle birlikte gönderilir, asla onların yerine gönderilmez.
moreHours[]hoursTypeId, moreHour[]Teslimat veya araca servis gibi ikincil çalışma programları. moreHour aynı day, type, slots yapısını kullanır ve specialDate içermez.
Weekly hours
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "id": "TG9jYXRpb246MTgwMDI4OQ==",    "businessHours": [      { "day": "MONDAY",    "type": "OPEN",   "slots": [{ "start": "09:00am", "end": "05:00pm" }] },      { "day": "TUESDAY",   "type": "OPEN",   "slots": [{ "start": "09:00am", "end": "05:00pm" }] },      { "day": "WEDNESDAY", "type": "OPEN",   "slots": [{ "start": "09:00am", "end": "05:00pm" }] },      { "day": "THURSDAY",  "type": "OPEN",   "slots": [{ "start": "09:00am", "end": "05:00pm" }] },      { "day": "FRIDAY",    "type": "OPEN",   "slots": [{ "start": "09:00am", "end": "05:00pm" }] },      { "day": "SATURDAY",  "type": "OPEN",   "slots": [{ "start": "10:00am", "end": "02:00pm" }] },      { "day": "SUNDAY",    "type": "CLOSED", "slots": [] }    ]  }}'

Bir tatil günü için aynı diziye bir SPECIAL öğesi ekleyin. Bu öğe yalnızca o tarihteki programın yerine geçer ve haftalık düzeni değiştirmez:

JSON
{ "day": "SPECIAL", "type": "CLOSED", "specialDate": "2026-12-25", "slots": [] }

3. Geçici kapanış belirtin veya adresi gizleyin

temporarilyClosed: true, işletmeyi kapalı olarak işaretler ve çalışma saatlerinin yayımlanmasını durdurur. Yeniden açmak için değerini false olarak ayarlayın. Belirli bir hizmet bölgesinde faaliyet gösteren bir işletme için hideAddress: true ayarını yapın: ListingsAPI adresi konumda tutar ancak yayın platformlarına göndermez.

Temporary closure
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "temporarilyClosed": true } }'

4. Google kategorilerini ayarlayın

Google Business Profile, sayısal subCategoryId değerinden ayrı, kendine özgü bir kategori sınıflandırmasına sahiptir. primaryGbpSiteCategoryId, gcid:restaurant gibi bir GCID alır; additionalGbpSiteCategoryIds ise bunlardan daha fazlasını alır. Her ikisi de countryIso temel alınarak çözümlenir, bu nedenle ülkeyi aynı çağrıda gönderin.

Google categories
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "id": "TG9jYXRpb246MTgwMDI4OQ==",    "countryIso": "US",    "primaryGbpSiteCategoryId": "gcid:restaurant",    "additionalGbpSiteCategoryIds": ["gcid:pizza_restaurant", "gcid:italian_restaurant"]  }}'

Bunları, alt kategoriler uç noktasından alınan tam sayı türündeki databaseId değerlerini kabul eden additionalCategoryIds ile karıştırmayın. Ülkeleri, eyaletleri ve kategorileri sorgulayın sayfasına bakın.

5. Konumu yeniden okuyun

GET /locations-by-ids, ids sorgu parametresinde JSON dizisi olarak iletilen bir veya daha fazla base64 kimliği için tam kaydı döndürür. phone, businessHours ve temporarilyClosed değerlerini gönderdiğiniz değerlerle karşılaştırın.

Verify
curl -G https://listingsapi.com/api/v4/locations-by-ids \--data-urlencode 'ids=["TG9jYXRpb246MTgwMDI4OQ=="]' \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "getLocationsByIds": [      {        "id": "TG9jYXRpb246MTgwMDI4OQ==",        "databaseId": 1800289,        "name": "Jenny Home",        "phone": "5125550199",        "hideAddress": false,        "temporarilyClosed": true      }    ]  }}

Hesabınızda bulunmayan kimlikler hata verilmeden diziden çıkarılır, bu nedenle döndürülen öğe sayısını talep ettiğiniz öğe sayısıyla karşılaştırın.

Webhook'lar yapılandırılmışsa bir profile.updated olayı tetiklenir. İletim, her konum için 60 saniyede bir kez olacak şekilde sınırlandırılır ve bu sürenin başında gerçekleşir: bu zaman aralığındaki sonraki düzenlemeler birleştirilir ve changed_fields yalnızca aralığı başlatan düzenlemeyi açıklar. Olay geldiğinde ve zaman aralığı sona erdikten sonra konumu yeniden okuyun.

Sonraki adımlar