Tambahkan lokasi
Buat lokasi dengan kolom yang dibutuhkan platform publikasi, tangani kesalahan validasi, dan pastikan lokasi tersebut telah masuk antrean pengiriman.
Profil bisnis, ulasan, postingan, dan analitik semuanya dikaitkan dengan ID lokasi. POST /api/v4/locations membuat lokasi dan memasukkan satu profil bisnis ke antrean untuk setiap platform publikasi dalam paket Anda.
1. Kumpulkan kolom yang wajib diisi
Ada 10 kolom yang wajib diisi. Bisnis dengan area layanan juga mengirimkan alamat lengkap: dengan hideAddress: true, ListingsAPI menyimpan alamat tersebut tetapi tidak mengirimkannya ke platform publikasi. Platform publikasi menampilkan kolom opsional yang tidak disertakan sebagai kolom kosong, jadi kirimkan semua informasi yang Anda miliki.
2. Buat lokasi
POST /api/v4/locations menerima kolom dalam objek input di dalam isi permintaan JSON. Metode Python SDK locations.add() menerima kolom yang sama sebagai argumen kata kunci dan memvalidasi kolom wajib sebelum mengirimkan permintaan. Metode Node SDK createLocation() menerima objek camelCase secara langsung.
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. Baca respons
Pembuatan yang berhasil mengembalikan success: true dan lokasi baru dalam data.createLocation.location. Simpan kedua pengenal: id adalah nilai base64 yang digunakan setiap operasi tulis berikutnya, dan databaseId adalah nilai numerik yang ditampilkan di dasbor dan payload webhook.
{ "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" } } }}status bernilai PENDING selama lokasi divalidasi dan dimasukkan ke antrean. Nilainya beralih ke tahap berikutnya tanpa panggilan API tambahan.
4. Tangani kesalahan validasi
Pembuatan dapat gagal pada 2 tahap. Permintaan dengan format yang salah atau kunci yang tidak valid mengembalikan 4xx dengan array errors di tingkat teratas. Permintaan dengan format yang benar tetapi memiliki kolom yang ditolak API mengembalikan 200 dengan success: false dan masalahnya di dalam data.createLocation.errors, jadi periksa isi respons setiap operasi tulis, bukan hanya kode statusnya.
{ "data": { "createLocation": { "success": false, "errors": [ { "code": "SY10005", "message": "SY10005: description must be at least 200 characters", "path": ["input", "description"] } ], "location": null } }}Kedua SDK memunculkan pengecualian saat terjadi kegagalan. locations.add() pada Python memeriksa kolom wajib secara lokal dan memunculkan ValidationError sebelum mengirimkan permintaan. createLocation() pada Node memunculkan ValidationError ketika API menolak masukan, sehingga contoh di atas tidak memeriksa penanda keberhasilan.
Kode yang paling sering Anda temui:
5. Pastikan pengiriman telah dimulai
Pembuatan lokasi memasukkan satu profil bisnis untuk setiap platform publikasi dalam paket Anda ke antrean. Setiap profil bisnis dimulai dengan status AVAILABLE atau IN_PROGRESS dan beralih ke SYNCED beserta listingUrl setelah platform publikasi menerimanya.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI5MA==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"Jika webhook telah dikonfigurasi, polling tidak diperlukan. Peristiwa profile.created dipicu saat catatan sudah ada, dan peristiwa listing.submission dipicu untuk setiap platform publikasi saat statusnya berubah.
Langkah selanjutnya
- Perbarui lokasi: ubah jam operasional, tandai penutupan sementara, tambahkan kategori Google.
- Unggah foto lokasi: logo, sampul, dan gambar galeri.
- Hubungkan Google dan impor lokasi: tautkan Google Business Profile agar profil bisnis, ulasan, dan postingan Google mulai disinkronkan.
- Hubungkan Apple Business Connect: publikasikan ke Apple Maps melalui akun Apple Business terverifikasi milik pemilik bisnis, atau melalui akun ListingsAPI jika pemilik bisnis tidak memilikinya.
- Periksa status profil bisnis dan tautan aktif: pantau pengiriman yang baru saja Anda masukkan ke antrean.