Konum ekleme
Yayın platformlarının ihtiyaç duyduğu alanlarla bir konum oluşturun, doğrulama hatalarını giderin ve konumun gönderim kuyruğuna alındığını doğrulayın.
İşletme kayıtları, yorumlar, gönderiler ve analizlerin tümü bir konum kimliğiyle ilişkilendirilir. POST /api/v4/locations konumu oluşturur ve planınızdaki her yayın platformu için bir işletme kaydını kuyruğa alır.
1. Gerekli alanları hazırlayın
10 alan zorunludur. Hizmet bölgesi olan bir işletme de tam adresini gönderir: hideAddress: true kullanıldığında ListingsAPI adresi saklar ancak yayın platformlarına göndermez. Yayın platformları, gönderilmeyen isteğe bağlı alanları boş gösterir; bu nedenle elinizdeki tüm bilgileri gönderin.
2. Konumu oluşturun
POST /api/v4/locations, alanları JSON istek gövdesindeki bir input nesnesi içinde alır. Python SDK yöntemi locations.add(), aynı alanları anahtar sözcüklü argümanlar olarak alır ve isteği göndermeden önce zorunlu olanları doğrular. Node SDK yöntemi createLocation(), camelCase nesnesini doğrudan alır.
curl -X POST https://listingsapi.com/api/v4/locations \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "name": "Acme Kitchen", "storeId": "ACME-NYC-001", "description": "Acme Kitchen is a family-owned neighborhood restaurant in downtown New York serving wood-fired pizza, hand-rolled pasta, and a short seasonal menu built around produce from nearby farms. Open for lunch and dinner seven days a week, with takeout and delivery available.", "street": "123 Jump Street", "city": "New York", "stateIso": "NY", "postalCode": "10013", "countryIso": "US", "phone": "6443859313", "bizUrl": "https://acmekitchen.example.com", "subCategoryId": 1432, "businessHours": [ { "day": "MONDAY", "type": "OPEN", "slots": [{ "start": "11:00am", "end": "10:00pm" }] }, { "day": "TUESDAY", "type": "OPEN", "slots": [{ "start": "11:00am", "end": "10:00pm" }] }, { "day": "WEDNESDAY", "type": "OPEN", "slots": [{ "start": "11:00am", "end": "10:00pm" }] }, { "day": "THURSDAY", "type": "OPEN", "slots": [{ "start": "11:00am", "end": "10:00pm" }] }, { "day": "FRIDAY", "type": "OPEN", "slots": [{ "start": "11:00am", "end": "11:00pm" }] }, { "day": "SATURDAY", "type": "OPEN", "slots": [{ "start": "12:00pm", "end": "11:00pm" }] }, { "day": "SUNDAY", "type": "CLOSED", "slots": [] } ] }}'3. Yanıtı okuyun
Başarılı bir oluşturma işlemi, success: true ve data.createLocation.location içinde yeni konumu döndürür. Her iki kimlik değerini de saklayın: id, sonraki her yazma işleminin aldığı base64 değeridir; databaseId ise kontrol panellerinde ve webhook yüklerinde gösterilen sayısal değerdir.
{ "data": { "createLocation": { "success": true, "errors": null, "location": { "id": "TG9jYXRpb246MTgwMDI5MA==", "databaseId": 1800290, "storeId": "ACME-NYC-001", "name": "Acme Kitchen", "city": "New York", "stateIso": "NY", "countryIso": "US", "status": "PENDING" } } }}Konum doğrulanıp kuyruğa alınırken status değeri PENDING olur. Ek bir API çağrısı olmadan sonraki duruma geçer.
4. Doğrulama hatalarını giderin
Bir oluşturma işlemi 2 noktada başarısız olabilir. Hatalı biçimlendirilmiş bir istek veya geçersiz bir anahtar, en üst düzeyde bir errors dizisi içeren 4xx döndürür. Doğru biçimlendirilmiş ancak API'nin reddettiği bir alan içeren bir istek, success: false ile birlikte 200 döndürür ve sorun data.createLocation.errors içinde yer alır; bu nedenle her yazma işleminde yalnızca durum kodunu değil, yanıt gövdesini de kontrol edin.
{ "data": { "createLocation": { "success": false, "errors": [ { "code": "SY10005", "message": "SY10005: description must be at least 200 characters", "path": ["input", "description"] } ], "location": null } }}Her iki SDK da başarısızlık durumunda istisna fırlatır. Python'daki locations.add(), zorunlu alanları yerel olarak kontrol eder ve isteği göndermeden önce ValidationError istisnasını fırlatır. Node'daki createLocation(), API girdiyi reddettiğinde ValidationError istisnasını fırlatır; bu nedenle yukarıdaki örnek herhangi bir başarı bayrağını kontrol etmez.
En sık karşılaşacağınız kodlar:
5. Gönderimin başladığını doğrulayın
Konum oluşturulduğunda planınızdaki her yayın platformu için bir işletme kaydı kuyruğa alınır. Her işletme kaydı AVAILABLE veya IN_PROGRESS durumunda başlar ve yayın platformu kaydı kabul ettiğinde bir listingUrl ile SYNCED durumuna geçer.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI5MA==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"Webhook'lar yapılandırıldığında düzenli aralıklarla sorgulama yapmanız gerekmez. Kayıt mevcut olduğunda bir profile.created olayı tetiklenir ve her yayın platformunun durumu değiştikçe o yayın platformu için bir listing.submission olayı tetiklenir.
Sonraki adımlar
- Bir konumu güncelleyin: çalışma saatlerini değiştirin, geçici olarak kapalı olduğunu belirtin, Google kategorileri ekleyin.
- Konum fotoğrafları yükleyin: logo, kapak ve galeri görselleri.
- Google'ı bağlayın ve konumları içe aktarın: Google işletme kayıtlarının, yorumlarının ve gönderilerinin senkronize edilmeye başlaması için Google Business Profile'ı bağlayın.
- Apple Business Connect'i bağlayın: işletme sahibinin doğrulanmış Apple Business hesabı üzerinden veya böyle bir hesabı yoksa ListingsAPI hesabı üzerinden Apple Maps'te yayınlayın.
- İşletme kaydı durumunu ve yayındaki kayıtlara ait bağlantıları kontrol edin: az önce kuyruğa aldığınız gönderimleri izleyin.