Mükerrer işletme kayıtlarını bulun ve yayından kaldırın

Konum ve hesap genelinde mükerrer işletme kayıtlarını listeleyin, kaldırılacakları onaylayın, yanlış tespitleri temizleyin, çözülene dek izleyin.

Mükerrer işletme kaydı, aynı işletmenin aynı dizindeki ikinci kaydıdır. Yorumları ve sıralama sinyallerini böler ve müşterilerin kafasını karıştırır. Tespit işlemi otomatik olarak çalışır. Bulunan kayıtları inceler, gerçekten mükerrer olanları onaylar ve geçerli olanları mükerrer listesinden çıkarırsınız.

Her mükerrer kayıt, temizleme sürecinin hangi aşamasında olduğunu gösteren bir durum bilgisi taşır:

DurumAnlamıYapmanız gereken
POTENTIALTespit edildi, henüz kimse işlem yapmadı.İnceleyin (3. ve 4. adımlar).
PROCESSINGOnayladınız; yayın platformunda yayından kaldırma işlemi devam ediyor.Bekleyin. Daha sonra yeniden okuyun (5. adım).
FIXEDYayın platformu kaydı kaldırdı veya birleştirdi.Tamamlandı.
FAILEDYayından kaldırma işlemi gerçekleşmedi.Canlı bağlantıyı kontrol edin; kayıt hâlâ yayındaysa destek ekibine bildirin.

1. Bir konumun mükerrer kayıtlarını listeleyin

GET /locations/{locationId}/listings/duplicates, site gruplarından oluşan düz bir dizi döndürür. Her grup, şüpheli mükerrer kayıtları içeren bir listings dizisine sahip bir dizindir ve her kayıtta bir listingItemId, değerlendirmek için açabileceğiniz bir liveLink ve bir status bulunur.

Duplicates for a location
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/duplicates \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "duplicateListingsForLocation": [      {        "id": "U2l0ZToxNTA=",        "name": "City Squares",        "url": "citysquares.com",        "listings": [          {            "id": "RHVwbGljYXRlOjIzNTk4NDUw",            "listingItemId": "TGlzdGluZ0l0ZW06MjM1OTg0NTA=",            "name": "Woodbury Train Station",            "liveLink": "http://citysquares.com/b/woodbury-train-station-23598450",            "status": "POTENTIAL"          }        ]      }    ]  }}

Boş bir dizi, hiçbir şey tespit edilmediği anlamına gelir. listingItemId değerini saklayın: her iki işaretleme endpoint'i de bu değeri alır. Node SDK, grupları her mükerrer kayıt için bir dizi olacak şekilde düzleştirir; bu nedenle sonraki işleme iletilecek değer buradaki d.id değeridir.

2. Hesap genelindeki mükerrer kayıtları bir araya getirin

GET /locations/listings/duplicates, hesap genelindeki görünümdür. Offset tabanlı bir sayfadır: girdi olarak page ve perPage alır; çıktı olarak records[] ile birlikte pageInfo.totalRecords ve pageInfo.totalPages verir. status için varsayılan değer POTENTIAL, tag için ise all olduğundan, parametresiz bir çağrı anahtarın görebildiği tüm açık mükerrer kayıtları döndürür. Sonuçları tek bir dizinle sınırlandırmak için siteId (bir plan-sites id'si) ekleyin.

Account rollup
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=POTENTIAL&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "duplicateListingsRollup": {      "pageInfo": { "hasNextPage": true, "totalPages": 34, "totalRecords": 1673 },      "records": [        {          "id": "3329229",          "name": "Woodbury Train Station",          "duplicateProcessingState": "POTENTIAL",          "liveLink": "http://citysquares.com/b/woodbury-train-station-23598450",          "locationId": "73451",          "siteName": "City Squares",          "siteUrl": "citysquares.com"        }      ]    }  }}

Toplu görünüm, mükerrer kayıtların nerede olduğunu gösterir; duplicateProcessingState, yukarıdakiyle aynı yaşam döngüsü durumudur. Bir kayıt üzerinde işlem yapmak için kaydın locationId değerini 1. adımdaki konum bazındaki endpoint'e iletin ve oradaki listingItemId değerini okuyun. Sayfaları teker teker gezin; aralıksız çalışan bir döngü, 429 ile karşılaşmanın en hızlı yoludur.

3. Yayından kaldırılması için bir mükerrer kaydı onaylayın

İnceleyen kişi bir kaydın mükerrer olduğunu onayladıktan sonra, input altındaki listingItemId değerleriyle POST /locations/listings/mark-as-duplicate çağrısını yapın. Bir konuma ait onaylanmış tüm id'leri tek bir çağrıda toplu olarak gönderin. locationId isteğe bağlıdır ve isteğin kapsamını o konumla sınırlar.

Mark as duplicate
curl -X POST https://listingsapi.com/api/v4/locations/listings/mark-as-duplicate \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]  }}'
JSON
{  "data": {    "markAsDuplicate": {      "success": true,      "errors": null    }  }}

success: true, öğelerin kabul edildiği ve PROCESSING durumuna geçirildiği anlamına gelir. success: false içeren bir 200 veya bir 400, öğeleri code ve message taşıyan bir errors dizisiyle birlikte gelir; bunun olağan nedeni bilinmeyen veya hatalı biçimlendirilmiş bir id'dir. SDK'lar bu durumda ValidationError hatasını fırlatır.

4. Yanlış bir tespiti temizleyin

Tespit mekanizması ihtiyatlı davranır. Aynı franchise ağına bağlı başka bir şube, ikinci bir geçerli profil veya adı değiştirilmiş bir konum mükerrer gibi görünebilir. POST /locations/listings/mark-as-not-duplicate, aynı istek gövdesini alır ve kaydı her iki listeden de kalıcı olarak kaldırır. 3. adımda yapılan hatalı bir işlemi de bu şekilde geri alabilirsiniz.

Mark as not duplicate
curl -X POST https://listingsapi.com/api/v4/locations/listings/mark-as-not-duplicate \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]  }}'

Yanıt, 3. adımdakiyle aynı success ve errors alanlarını içeren data.markAsNotDuplicate olur.

5. İlerlemeyi takip edin

Hangi kayıtların hâlâ yayın platformlarında işlem gördüğünü görmek için toplu görünümü status=PROCESSING ile, hangilerinin kaldırıldığını doğrulamak için ise status=FIXED ile yeniden okuyun. İki SDK da henüz status filtresini sunmadığından, endpoint'i aynı Authorization header'ıyla doğrudan çağırın.

Progress
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=PROCESSING&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY" curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=FIXED&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"

perPage=1 isteyip pageInfo.totalRecords değerini okuyarak dört çağrıda her durumun kayıt sayısını elde edebilirsiniz. liveLink değeri hâlâ erişilebilir bir adrese yönlenen bir FAILED kaydı manuel inceleme gerektirir; bağlantısı artık çalışmayan bir FAILED kaydı ise yayın platformu tarafından kendiliğinden düzeltilmiştir ve 4. adımla listeden çıkarılabilir.

Sonraki adımlar