Bağlı hesaplar

cURL, Python, Node uç nokta örnekleri: Google/Facebook bağlama, hesap listeleme, işletme kaydı eşleme/bağlama, klasörler, GMB oluşturma, bağlantı kesme.

Bağlı hesap, bir Google Business Profile veya Facebook Pages sahibinin verdiği ve API'nin bu hesabın erişebildiği işletme kayıtlarını okumasına ve yönetmesine olanak tanıyan bir OAuth yetkilendirmesidir. Bu kaynak üç işi kapsar: OAuth bağlantılarını oluşturmak, hesabın işletme kayıtlarını konumlarınızla eşleştirmek veya konumlarınıza bağlamak ve bağlantıyı kaldırmak. Liste ve ayrıntı okumaları için kullanılan iki GET işlemi bir Read (okuma) anahtarıyla çalışır; salt okunur işletme kaydı getirme işlemi dahil her POST işlemi bir Write (yazma) anahtarı gerektirir ve bir yazma işleminde Read anahtarı kullanılması, SY90016 ile birlikte HTTP 400 döndürür.

Aşağıdaki her örnek, ilk örnekte gösterildiği gibi bir kez oluşturulmuş bir istemcinin kullanıldığını varsayar ve LISTINGSAPI_KEY değerini ortamdan okur. Kimlikler, liste uç noktasından alınan connectedAccountId UUID'si ve base64 konum kimliğidir (TG9jYXRpb246MTgwMDI4OQ==); ikisine de hiçbir zaman URL kodlaması uygulamayın.

Uç noktalara genel bakış

YöntemYolİşlevBaşvuru
POST/connected-accounts/connect-googleBir Google hesabı için 24 saat geçerli bir toplu bağlama bağlantısı oluşturun.Bir Google hesabını bağlayın
POST/connected-accounts/connect-facebookBir Facebook hesabı için 24 saat geçerli bir toplu bağlama bağlantısı oluşturun.Bir Facebook hesabını bağlayın
POST/locations/oauth_connect_urlTek bir konuma bağlı, tek kullanımlık bir bağlama bağlantısı oluşturun.Tek bir konum için OAuth bağlama URL'si
GET/connected-accountsBağlı hesapları bağlantı durumu ve bağlı öğe sayılarıyla birlikte listeleyin.Bağlı hesapları listeleyin
GET/connected-accounts/{connectedAccountId}/detailsEşleştirme işinin durumu dahil tek bir hesabın bilgilerini okuyun.Bağlı hesap ayrıntılarını alın
POST/connected-accounts/connected-account-listingsBir hesabın erişebildiği yayın platformlarındaki işletme kayıtlarını listeleyin.Bağlı bir hesabın işletme kayıtlarını getirin
POST/connected-accounts/trigger-matchesBir veya daha fazla hesap için getirme ve eşleştirme işini kuyruğa alın.Konum eşleştirmelerini tetikleyin
GET/connected-accounts/{connectedAccountId}/connection-suggestionsÖnerilen konum ve işletme kaydı eşleştirmelerini okuyun.Bağlantı önerilerini listeleyin
POST/connected-accounts/confirm-matchesÖnerileri kabul edin ve etkin bağlantıları oluşturun.Bağlantı eşleştirmelerini onaylayın
POST/connected-accounts/connect-listingSeçilen bir işletme kaydını bir konuma bağlayın.Bir işletme kaydını bir konuma bağlayın
POST/connected-accounts/disconnect-listingBir konumun bir yayın platformuyla bağlantısını kaldırın.Bir işletme kaydının bir konumla bağlantısını kaldırın
POST/connected-accounts/create-location-from-listingBir yayın platformundaki işletme kaydından yeni bir konum oluşturun.Bir işletme kaydından konum oluşturun
GET/connected-accounts/{connectedAccountId}/foldersGoogle hesap gruplarını (klasörlerini) listeleyin.GMB klasörlerini listeleyin
POST/locations/create/gmb-listingBir konum için tamamen yeni bir Google Business Profile oluşturun.Bir GMB işletme kaydı oluşturun
POST/connected-accounts/disconnect-googleBir Google hesabının bağlantısını tamamen kaldırın.Bir Google hesabının bağlantısını kaldırın
POST/connected-accounts/disconnect-facebookBir Facebook hesabının bağlantısını tamamen kaldırın.Bir Facebook hesabının bağlantısını kaldırın
POST/locations/oauth-disconnectTek bir konumun bir yayın platformuyla bağlantısını kaldırın (disconnect-listing ile aynı işlem).Tek bir konumun bir yayın platformuyla bağlantısını kaldırın

POST /connected-accounts/connect-google

Kısa süre geçerli bir OAuth URL'si döndürür. Hesap sahibini bu URL'ye yönlendirin; Google, hesap sahibini successUrl veya errorUrl adresinize geri yönlendirir. Bağlantı, API anahtarının sahibi olan hesapla sınırlıdır; bu nedenle gövde yalnızca iki yönlendirme adresinizi içerir. Yetkilendirmesinin süresi dolmuş bir hesap için yeniden bağlantı oluşturmak, yinelenen bir bağlantı oluşturmak yerine mevcut bağlantıyı yeniler.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne; gövdenin tamamı bu nesnenin altında yer alır.
input.successUrlbodyevetKontrolünüzde olan mutlak bir https URL'si. İzin verildikten sonra bu adrese yönlendirilir.
input.errorUrlbodyevetKontrolünüzde olan mutlak bir https URL'si. İptal veya başarısızlık durumunda bu adrese yönlendirilir.
Connect Google
curl -X POST https://listingsapi.com/api/v4/connected-accounts/connect-google \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "successUrl": "https://app.example.com/connect/google/success",    "errorUrl": "https://app.example.com/connect/google/error"  }}'
JSON
{  "data": {    "bulkConnectLinkForGoogle": {      "success": true,      "url": "https://connect.example.com/oauth?token=8f3c1d92-...",      "errors": null    }  }}

Yukarıdaki url bir yer tutucudur. Hesap sahibini kendi yanıtınızda döndürülen url adresine yönlendirin.

Bağlantı 24 saat geçerlidir. errors yalnızca oluşturma işlemi başarısız olduğunda doldurulur; bu nedenle url değerinin null olmadığını kontrol edin. Kapsayıcı nesne olmadan gönderilen veya accountId içeren bir gövde, HTTP 400 ile reddedilir.

POST /connected-accounts/connect-facebook

Aynı gövdeyi kullanan Facebook karşılığıdır. İşlem sırasında hesap sahibi Facebook'un koşullarını kabul eder ve API'nin ihtiyaç duyduğu sayfa yönetimi izinlerini verir; izinlerden birini atlarsa bağlantı eşitleme yapamaz, bu nedenle bağlantıyı yeniden oluşturun ve hesap sahibinin yeniden izin vermesini sağlayın.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne.
input.successUrlbodyevetKontrolünüzde olan mutlak bir https URL'si.
input.errorUrlbodyevetKontrolünüzde olan mutlak bir https URL'si.
Connect Facebook
curl -X POST https://listingsapi.com/api/v4/connected-accounts/connect-facebook \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "successUrl": "https://app.example.com/connect/facebook/success",    "errorUrl": "https://app.example.com/connect/facebook/error"  }}'
JSON
{  "data": {    "bulkConnectLinkForFacebook": {      "success": true,      "url": "https://connect.example.com/oauth?token=8f3c1d92-...",      "errors": null    }  }}

Yukarıdaki url bir yer tutucudur. Hesap sahibini kendi yanıtınızda döndürülen url adresine yönlendirin.

Yanıttaki anahtar bulkConnectLinkForFacebook olur; bunun dışında yanıtı Google bağlantısının yanıtıyla tamamen aynı şekilde okuyun. Hesap sahibi işlemi tamamladığında hesap, liste uç noktasında bir FacebookAccount olarak görünür.

POST /locations/oauth_connect_url

İşletme sahibinin hangi konumu bağlayacağını zaten biliyorsanız bunu kullanın. Bağlantı, belirttiğiniz konuma bağlıdır; bu nedenle ardından eşleştirme adımı gelmez: işletme sahibi izin verdiğinde kimlik bilgileri doğrudan o konuma bağlanır. Yukarıdaki iki toplu bağlantı ise hesabın tamamını bağlar.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne.
input.locationIdbodyevetBase64 konum kimliği veya ham sayısal kimlik.
input.sitebodyevetGOOGLE, FACEBOOK veya APPLE.
input.successUrlbodyevetİzin verildikten sonra yönlendirilen mutlak URL.
input.errorUrlbodyevetİptal veya başarısızlık durumunda yönlendirilen mutlak URL.
Single-location link
curl -X POST https://listingsapi.com/api/v4/locations/oauth_connect_url \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "site": "GOOGLE",    "successUrl": "https://app.example.com/locations/1800289/connected",    "errorUrl": "https://app.example.com/locations/1800289/connect-failed"  }}'
JSON
{  "data": {    "createConnectUrl": {      "success": true,      "url": "https://connect.example.com/oauth?token=8f3c1d92-...",      "errors": null    }  }}

Yukarıdaki url bir yer tutucudur. İşletme sahibini kendi yanıtınızda döndürülen url adresine yönlendirin.

Bağlantı tek kullanımlıktır; bu nedenle önbelleğe almak yerine her deneme için yeni bir bağlantı oluşturun. Göreli veya ayrıştırılamayan bir yönlendirme URL'si, null url içeren bir success: true yanıtıyla döner; bu nedenle yalnızca success değerini değil, url değerini de kontrol edin. Bu konum üzerinde işlem yapma yetkisi olmayan bir anahtar, SY90003 içeren bir 403 yanıtı alır. SDK'lar site değerini sizin için büyük harfe dönüştürür.

Bağlı hesapları listeleyin

GET /connected-accounts

API hesabınız üzerinden yetkilendirilmiş tüm hesapları, bağlantı durumları ve her birinin kaç konuma bağlı olduğu bilgisiyle döndürür. Bu, ofset tabanlı bir sayfadır: records[] ve pageInfo.totalRecords içerir, iç içe olmayan page ve perPage sorgu parametreleriyle sayfalanır. Sıralama, hesap e-posta adresine göre artan olarak sabittir.

AdBulunduğu yerZorunluNotlar
pagequeryhayır1'den başlayan sayfa numarası. Varsayılan değer 1'dir.
perPagequeryhayırSayfa başına kayıt sayısı. Varsayılan değer 20'dir.
publisherqueryhayırGoogleAccount, FacebookAccount, AppleAccount, YelpAccount, TripadvisorAccount, LinkedinAccount, PinterestAccount veya TwitterAccount.
statusqueryhayırConnected, NotConnected veya ConnectionIssue. Büyük ve küçük harfler karışıktır.
List accounts
curl "https://listingsapi.com/api/v4/connected-accounts?publisher=GoogleAccount&status=Connected&page=1&perPage=20" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "connectedAccountsInfo": {      "pageInfo": { "hasNextPage": false, "hasPreviousPage": false, "totalPages": 1, "totalRecords": 1 },      "records": [        {          "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",          "connectedAccountType": "GoogleAccount",          "email": "owner@brightsmile-dental.com",          "status": "CONNECTED",          "connectivityIssue": null,          "connectedLocationsCount": 0,          "requestMatchesStatus": "MATCH_COMPLETED",          "lastFetchMatchesRequestedAt": "2026-07-06 21:43:07 UTC"        }      ]    }  }}

email alanı izin veren işletme sahibini gösteren kaydı seçin ve bu kaydın connectedAccountId değerini saklayın; sonraki tüm çağrılar bu değeri alır. Bu dört sorgu parametresi dışındaki her şey reddedilmek yerine yok sayılır; bu nedenle JSON içinde gönderilen pageInfo, hata bildirilmeden 1. sayfanın döndürülmesine neden olur.

Kayıttaki statusAnlamı
CONNECTEDKimlik bilgileri geçerlidir. Eşleştirmeyi tetiklemek veya yayımlamak güvenlidir.
MATCH_IN_PROGRESSBir eşleştirme işlemi kuyruğa alınmıştır veya çalışmaktadır.
CONNECTIVITY_ISSUEİznin süresi dolmuştur. connectivityIssue nedenini belirtir; bağlama bağlantısını yeniden oluşturun.

status filtresi ve kaydın status alanı aynı değer kümesini kullanmaz. CONNECTED değerini filtre olarak geri göndermek geçersiz bir enum değeri oluşturur ve 400 yanıtı döndürülmesine neden olur.

Tek bir hesabın ayrıntılarını alın

GET /connected-accounts/{connectedAccountId}/details

Tek bir hesapla sınırlı olarak, listedeki bir kayıtla aynı alanları döndürür. Eşleştirmeleri tetikledikten sonra requestMatchesStatus alanını düzenli aralıklarla sorgulamak veya hesap üzerinden bir güncelleme göndermeden önce status ve connectivityIssue alanlarını kontrol etmek için kullanın.

AdBulunduğu yerZorunluNotlar
connectedAccountIdpathevetListeleme uç noktasından alınan UUID.
Account details
curl https://listingsapi.com/api/v4/connected-accounts/4f712c17-4f95-42dd-90f4-97171a2e67b5/details \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "connectedAccountDetails": {      "details": {        "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",        "connectedAccountType": "GoogleAccount",        "status": "CONNECTED",        "connectivityIssue": null,        "connectedLocationsCount": 0,        "requestMatchesStatus": "MATCH_COMPLETED"      }    }  }}

Kayıt, bir alt düzeydeki data.connectedAccountDetails.details alanında bulunur. Öneriler hazır olduğunda requestMatchesStatus, MATCH_IN_PROGRESS değerinden MATCH_COMPLETED değerine geçer. Completed, eşleştiricinin işlemi bitirdiği anlamına gelir, herhangi bir şeyin bağlandığı anlamına gelmez: bir işletme kaydını onaylayana veya bağlayana kadar connectedLocationsCount, 0 olarak kalır.

Bir hesabın erişebildiği işletme kayıtlarını alın

POST /connected-accounts/connected-account-listings

Konumlarınızdan birine bağlı olup olmadığına bakılmaksızın, hesabın erişebildiği tüm Google Business Profile veya Facebook işletme kayıtlarını listeler. Her kaydın id değeri, connect-listing ve create-location-from-listing işlemlerinin aldığı connectedAccountListingId değeridir. Bu, yalnızca okuma yapan bir POST işlemidir ve ofset tabanlı bir sayfa döndürür: records[] ve pageInfo içerir, gövdedeki iç içe olmayan page ve perPage anahtarlarıyla sayfalanır.

AdBulunduğu yerZorunluNotlar
connectedAccountIdbodyevetİşletme kayıtları alınacak hesabın UUID değeri. input içine yerleştirilmez.
pagebodyhayırSayfa numarası. Varsayılan değer 1'dir.
perPagebodyhayırSayfa başına kayıt sayısı. Varsayılan değer 500'dür ve bu aynı zamanda en yüksek değerdir.
locationInfobodyhayırAd, adres, yerleşim yeri, posta kodu, mağaza kodu ve telefon alanlarında serbest metin araması.
Account listings
curl -X POST https://listingsapi.com/api/v4/connected-accounts/connected-account-listings \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5", "perPage": 50, "locationInfo": "William St" }'
JSON
{  "data": {    "connectedAccountListings": {      "pageInfo": { "hasNextPage": false, "totalPages": 1, "totalRecords": 60 },      "records": [        {          "id": "R21iQnVsa0RhdGFMYWtlOjA2MDQ4NmExLTA0NzQtNDc4NS1iMjNhLTBkOGM4MzhmNGQ5OA==",          "accountTypeName": "Google",          "locationName": "Trial",          "address": "123 William St, NY 10038, Manhattan, US",          "phone": "(718) 667-7787",          "liveLink": null        }      ]    }  }}

pageInfo.hasNextPage ve pageInfo.totalPages ile sonuç kümesinin sayfalarını gezin. SDK'lar connectedAccountId değerini sizin için gövdeye yerleştirir; bu nedenle bu durum yalnızca elle yazılan REST çağrılarını etkiler.

Eşleştirmeyi başlatın

POST /connected-accounts/trigger-matches

Belirtilen hesapların erişebildiği tüm profilleri getiren ve her birini konumlarınızdan biriyle eşleştiren işi kuyruğa ekler. Eşleştirme, henüz bağlanmamış, etkin ve arşivlenmemiş tüm konumları dikkate alır. Yalnızca önerileri kaydeder; siz onaylayana kadar hiçbir bağlantı kurulmaz.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne.
input.connectedAccountIdsbodyevetListeleme uç noktasından alınan hesap UUID'lerini içeren dizi.
Trigger matches
curl -X POST https://listingsapi.com/api/v4/connected-accounts/trigger-matches \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "connectedAccountIds": ["4f712c17-4f95-42dd-90f4-97171a2e67b5"] } }'
JSON
{  "data": {    "connectedAccountsTriggerMatches": {      "success": true,      "failedIds": null    }  }}

success: true, işin kuyruğa eklendiği anlamına gelir; eşleştirmenin tamamlandığı anlamına gelmez. Kuyruğa eklenemeyen her hesap failedIds içinde listelenir ve success değeri false olur. Önerileri okumadan önce, requestMatchesStatus değeri MATCH_COMPLETED olana kadar ayrıntı uç noktasını düzenli aralıklarla sorgulayın; sınırlı bir döngüde 15 saniyede bir sorgulamak, Launch planının dakikada 10 istek sınırını aşmamasını sağlar.

Bağlantı önerilerini okuyun

GET /connected-accounts/{connectedAccountId}/connection-suggestions

Eşleştiricinin önerdiği eşleşmeleri döndürür: bir tarafta konumunuz (locationInfo; bunun databaseId değeri locationId olur), diğer tarafta ise yayın platformundaki işletme kaydı (suggestedLocationInfo) bulunur. Bu, iç içe olmayan page ve perPage sorgu parametreleriyle sayfalanan, ofset tabanlı bir sayfadır; sıralama, konum bilgisine göre artan sıra olarak sabitlenmiştir.

AdBulunduğu yerZorunluNotlar
connectedAccountIdpathevetHesabın UUID'si.
pagequeryhayır1'den başlayan sayfa numarası. Varsayılan değer 1'dir.
perPagequeryhayırSayfa başına kayıt sayısı. Varsayılan değer 20'dir.
Suggestions
curl "https://listingsapi.com/api/v4/connected-accounts/4f712c17-4f95-42dd-90f4-97171a2e67b5/connection-suggestions?page=1&perPage=20" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "connectionSuggestionsForAccount": {      "pageInfo": { "hasNextPage": false, "totalPages": 1, "totalRecords": 2 },      "records": [        {          "accountType": "GMB",          "matchedDataDatabaseId": "0d5e306f-0da0-46e3-929f-fd3c67ccd8cc",          "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",          "locationId": "73415",          "locationInfo": { "name": "My Business", "city": "Lincoln", "stateIso": "NE" },          "suggestedLocationInfo": { "locationInfo": { "name": "My Business", "city": "Lincoln" } }        }      ]    }  }}

Bir öneride id bulunmaz. matchedDataDatabaseId ve accountType değerlerini bir arada tutun; confirm-matches, id değerini oluşturmak için her ikisine de ihtiyaç duyar. Çok erken, MATCH_COMPLETED öncesinde okursanız uç nokta totalRecords: 0 ile birlikte records: [] döndürür; bu yanıt, "hiçbir eşleşme bulunamadı" yanıtıyla tamamen aynı görünür.

accountTypeYayın platformuEşleşme kaydı türü
GMBGoogle Business ProfileGmbLocationMatchedData
FBFacebook PagesFbLocationMatchedData
APPLEApple Business ConnectAppleLocationMatchedData

Eşleşmeleri onaylayın

POST /connected-accounts/confirm-matches

Onayladığınız önerileri kabul eder ve etkin bağlantıları oluşturur. Her id, yukarıdaki tablodan seçilen tür kullanılarak oluşturulan <MatchRecordType>:<matchedDataDatabaseId> değerinin base64 biçiminde kodlanmış halidir. Hesap kayıtlardan belirlenir, bu nedenle connectedAccountId alanı yoktur; input içindeki bilinmeyen bir alan 400 ile reddedilir.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne. Yalnızca matchRecordIds tanımlıdır.
input.matchRecordIdsbodyevetBase64 biçiminde kodlanmış eşleşme kaydı id değerlerini içeren dizi. En az bir değer gerekir.
Confirm matches
# base64 of GmbLocationMatchedData:0d5e306f-0da0-46e3-929f-fd3c67ccd8cccurl -X POST https://listingsapi.com/api/v4/connected-accounts/confirm-matches \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "matchRecordIds": ["R21iTG9jYXRpb25NYXRjaGVkRGF0YTowZDVlMzA2Zi0wZGEwLTQ2ZTMtOTI5Zi1mZDNjNjdjY2Q4Y2M="] } }'
JSON
{  "data": {    "confirmConnectMatches": {      "success": true,      "failedIds": null    }  }}

failedIds, örneğin daha önce kullanılmış bir kayıt veya eşleştirmeden sonra arşivlenmiş bir konum nedeniyle onaylanamayan matchedDataDatabaseId değerlerini kodu çözülmüş halde içerir; bu nedenle bu değerleri öneri kayıtlarıyla eşleştirin. Gönderilmeyen önerilere dokunulmaz. Onaylama, konumu işletme kaydına bağlar; tek başına yayın platformuna veri göndermez.

Tek bir işletme kaydını bir konuma bağlayın

POST /connected-accounts/connect-listing

Önceden seçtiğiniz tek bir işletme kaydını, öneri veya onay adımı olmadan tek bir konuma bağlar. Eşleştirme belirsiz olduğunda, örneğin birbirine yakın ve benzer adlara sahip iki mağaza bulunduğunda ve bir operatör hesabın işletme kayıtları arasından doğru olanı seçtiğinde bunu kullanın.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne.
input.locationIdbodyevetBase64 biçiminde kodlanmış konum id değeri.
input.connectedAccountIdbodyevetİşletme kaydının sahibi olan hesabın UUID'si.
input.connectedAccountListingIdbodyevetHesabın işletme kayıtları uç noktasından alınan bir kaydın id değeri. listingId değildir.
Connect listing
curl -X POST https://listingsapi.com/api/v4/connected-accounts/connect-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",    "connectedAccountListingId": "R21iQnVsa0RhdGFMYWtlOjA2MDQ4NmExLTA0NzQtNDc4NS1iMjNhLTBkOGM4MzhmNGQ5OA=="  }}'
JSON
{  "data": {    "connectListing": {      "success": true,      "message": null    }  }}

Başarısız bir bağlama işlemi, null olmayan bir message ile birlikte success: false döndürür; örneğin işletme kaydı id değeriyle bir kayıt bulunamadığında Listing record not found veya işletme kaydının zaten başka bir konuma bağlı olduğunu belirten bir not döndürülür. Her iki SDK'da da bu metot, bağlı hesaplar kaynağında değil, işletme kayıtları kaynağında yer alır.

Tek bir işletme kaydının bir konumla bağlantısını kesin

POST /connected-accounts/disconnect-listing

Tek bir konum ile tek bir yayın platformu arasındaki bağlantıyı keser. Konum ve verileri korunur; yalnızca bu yayın platformuna giden senkronizasyon durur. Bu, toplu işlem uç noktası değildir; bu nedenle konumlar üzerinde döngü kullanın. Bir mağazayı farklı bir Google hesabına bağlamak için önce buradan bağlantıyı kesin, ardından yeni hesap üzerinden eşleştirin veya bağlayın.

AdBulunduğu yerZorunluNotlar
inputbodyevetKapsayıcı nesne.
input.locationIdbodyevetİlgili tek konumun base64 biçiminde kodlanmış id değeri.
input.sitebodybir tanesiGOOGLE, FACEBOOK veya APPLE. providerId gönderilmediği sürece zorunludur.
input.providerIdbodybir tanesisite yerine yayın platformunun kendi hesap tanımlayıcısı.
Disconnect listing
curl -X POST https://listingsapi.com/api/v4/connected-accounts/disconnect-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "site": "GOOGLE" } }'
JSON
{  "data": {    "disconnectConnectedAccountsLocations": {      "clientMutationId": null,      "success": true,      "errors": null    }  }}

Ne site ne de providerId gönderilirse SY10056 döndürülür. Bir konumun o site için etkin bağlantısı yoksa sessizce başarı yanıtı vermek yerine SY10057 döndürülür; dolayısıyla success: true gerçekten bir bağlantının kaldırıldığı anlamına gelir. SDK'lar yalnızca site parametresini kabul eder ve değerini büyük harfe dönüştürür.

Bir işletme kaydından konum oluşturma

POST /connected-accounts/create-location-from-listing

Eşleştirme, işletme kayıtlarını yalnızca mevcut konumlarınızla eşleştirir. Bu işlem, konumu olmayan bir işletme kaydı için yayın platformunun verilerinden bir konum oluşturur ve bunu aynı anda işletme kaydına bağlar. Google'dan ad, adres, koordinatlar, telefon, web sitesi, açıklama, normal ve özel çalışma saatleri, kategoriler, açılış tarihi, mağaza kodu ve saat diliminin yanı sıra işletme kaydının Google özelliklerinden elde edilen ödeme yöntemleri ve sosyal medya bağlantıları içe aktarılır. Facebook'tan ad, konum, çalışma saatleri, kategoriler, açıklama ve iletişim bilgileri içe aktarılır.

Google'dan içe aktarma sırasında veriler Google'a yeniden gönderilmez; bu nedenle işletme kaydı, ilk konum güncellemeniz bu kayıtta yayımlanana kadar IN_PROGRESS durumunda kalır. Diğer tüm yayın platformlarına veriler normal şekilde gönderilir ve bu uç nokta site kapsamı kabul etmediğinden konum, hesabınızdaki yayın platformlarının tamamı için oluşturulur. Oluşturma işleminden hemen sonra enabledSiteIds ile kapsamı daraltın ve bu güncellemeyi hemen gönderin: diğer yayın platformlarına ait sipariş kalemleri, oluşturma işleminden kısa süre sonra oluşturulur ve güncelleme, önceden oluşturulmuş kalemleri geri çekmez.

Henüz iki SDK'da da bu uç nokta için bir sarmalayıcı bulunmadığından Python ve Node örnekleri, aynı üstbilgiyle REST çağrısı yapar.

AdBulunduğu yerZorunluNotlar
inputbodyevetSarmalayıcı nesne.
input.connectedAccountIdbodyevetİşletme kaydının sahibi olan hesabın UUID'si.
input.connectedAccountListingIdbodyevetHesabın işletme kayıtları uç noktasından alınan bir kaydın id değeri. listingId değil.
Create from listing
curl -X POST https://listingsapi.com/api/v4/connected-accounts/create-location-from-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",    "connectedAccountListingId": "R21iQnVsa0RhdGFMYWtlOjA2MDQ4NmExLTA0NzQtNDc4NS1iMjNhLTBkOGM4MzhmNGQ5OA=="  }}'
JSON
{  "data": {    "createLocationFromConnectedAccountListing": {      "success": true,      "locationId": 88277,      "errors": null    }  }}

locationId, yeni konumun yalın databaseId değeridir. Başarısızlık durumunda success, false olur; locationId, null olur ve errors, SY81067 (işletme kaydı id değeriyle eşleşen kayıt bulunamadı) gibi bir neden kodu içerir; diğer nedenler, işletme kaydının zaten başka bir konuma bağlı olması veya hesabın kimlik bilgilerinin süresinin dolmuş olmasıdır. Konumu oluşturduktan sonra diğer konumlar gibi yönetin.

Bir Google hesabının klasörlerini listeleme

GET /connected-accounts/{connectedAccountId}/folders

Bağlı Google hesabının erişebildiği Google Business Profile hesap gruplarını (klasörleri) döndürür. Yeni profilin, sahibinin beklediği grupta yer alması için GMB işletme kaydı oluşturmadan önce bunu kullanın. Yanıt, getFoldersUnderGoogleAccount altında yer alan düz bir dizidir, bir sayfa değildir. Yol yalnızca GoogleAccount bağlantıları için geçerlidir.

AdBulunduğu yerZorunluNotlar
connectedAccountIdpathevetGoogle türündeki bir hesabın UUID'si.
Folders
curl https://listingsapi.com/api/v4/connected-accounts/4f712c17-4f95-42dd-90f4-97171a2e67b5/folders \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "getFoldersUnderGoogleAccount": [      { "folderId": "accounts/104890024806530350198", "folderName": "Bright Smile Dental", "locationCount": null }    ]  }}

folderId değerini değiştirmeden kullanın; bu, bir sayı değil, accounts/{id} dizesidir. Google bildirmediğinde locationCount, null olabilir; bu nedenle bu alanı isteğe bağlı olarak değerlendirin.

Bir konum için Google Business Profile oluşturma

POST /locations/create/gmb-listing

Google işletme kaydı olmayan bir konum için bağlı bir Google hesabı altında ve isteğe bağlı olarak bir klasör içinde yeni bir Google işletme kaydı oluşturur. Buna karşılık connect-listing, mevcut bir işletme kaydını bağlar. Konumun zaten ad, adres ve telefon bilgilerini içermesi gerekir ve her konum için yalnızca bir Google işletme kaydı bulunabilir.

AdBulunduğu yerZorunluNotlar
inputbodyevetSarmalayıcı nesne.
input.locationIdbodyevetBase64 konum id değeri.
input.connectedAccountIdbodyevetİşletme kaydının altında oluşturulacağı Google hesabının UUID'si.
input.folderIdbodyhayırKlasörler uç noktasından alınan accounts/{id} dizesi. Hesabın kök düzeyinde oluşturmak için bu alanı göndermeyin.
Create GMB listing
curl -X POST https://listingsapi.com/api/v4/locations/create/gmb-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",    "folderId": "accounts/104890024806530350198"  }}'
JSON
{  "data": {    "createGmbListingForLocation": {      "clientMutationId": null,      "success": true,      "errors": null    }  }}

Oluşturma işlemi eşzamansızdır: success: true, isteğin kabul edildiği anlamına gelir ve Google, yeni profilleri yayımlanmadan önce inceler. success değeri false olduğunda errors bunun nedenini belirtir: zorunlu alanların eksik olması, mevcut bir Google işletme kaydının bulunması, konumun arşivlenmiş olması veya hesabın etkin olmaması.

Google hesabının tamamının bağlantısını kesin

POST /connected-accounts/disconnect-google

Hesabın tamamının bağlantısını kaldırır: bu hesap üzerinden bağlanan tüm konumların senkronizasyonu durur. locationIds alanı yoktur; hesabın bağlantısını koruyup tek bir konumun bağlantısını kesmek için disconnect-listing kullanın. Bir müşteri ayrıldığında veya bozuk bir yetkilendirme kaldırılamadığında ve yeni bir bağlantı kurma bağlantısıyla baştan başlamak istediğinizde bunu kullanın.

AdBulunduğu yerZorunluNotlar
inputbodyevetSarmalayıcı nesne.
input.connectedAccountIdbodyevetGoogle hesabının UUID'si. Hesabın tamamının bağlantısı kesilir.
Disconnect Google
curl -X POST https://listingsapi.com/api/v4/connected-accounts/disconnect-google \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "connectedAccountId": "d2397854-52c2-41d7-95f1-b90cba16498d" } }'
JSON
{  "data": {    "gmbBulkDisconnect": {      "success": true    }  }}

Bilinmeyen bir connectedAccountId için bile success: true döndürülür; dolayısıyla bu, "etkin bir bağlantı kaldırıldı" değil, "istek işlendi" anlamına gelir. Emin olmanız gerekiyorsa bağlı hesapları yeniden listeleyin.

Facebook hesabının tamamının bağlantısını kesin

POST /connected-accounts/disconnect-facebook

Aynı istek gövdesini kullanan Facebook karşılığıdır. Hesap üzerinden bağlanan sayfaların senkronizasyonu durur ve Facebook etkileşimleri artık görünmez.

AdBulunduğu yerZorunluNotlar
inputbodyevetSarmalayıcı nesne.
input.connectedAccountIdbodyevetFacebook hesabının UUID'si. Hesabın tamamının bağlantısı kesilir.
Disconnect Facebook
curl -X POST https://listingsapi.com/api/v4/connected-accounts/disconnect-facebook \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "connectedAccountId": "d2397854-52c2-41d7-95f1-b90cba16498d" } }'
JSON
{  "data": {    "fbBulkDisconnect": {      "success": true    }  }}

Yanıt anahtarı fbBulkDisconnect şeklindedir. Google'da olduğu gibi, bilinmeyen bir id için success: true döndürülmesi kaldırıldığı değil, işlendiği anlamına gelir.

Tek bir konumun bir yayın platformuyla bağlantısını kesin

POST /locations/oauth-disconnect

Konum bazındaki OAuth akışının bağlantı kesme bölümüdür. İkinci bir yol üzerinden sunulan, disconnect-listing ile aynı işlemdir: input gövdesi ve disconnectConnectedAccountsLocations yanıt anahtarı aynıdır. Entegrasyonunuzda daha anlaşılır olan yolu seçin.

AdBulunduğu yerZorunluNotlar
inputbodyevetSarmalayıcı nesne.
input.locationIdbodyevetTek bir konumun Base64 kimliği.
input.sitebodybir tanesiGOOGLE, FACEBOOK veya APPLE. providerId gönderilmediği sürece zorunludur.
input.providerIdbodybir tanesisite yerine yayın platformunun kendi hesap tanımlayıcısı.
OAuth disconnect
curl -X POST https://listingsapi.com/api/v4/locations/oauth-disconnect \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "site": "GOOGLE" } }'
JSON
{  "data": {    "disconnectConnectedAccountsLocations": {      "clientMutationId": null,      "success": true,      "errors": null    }  }}

Aynı SY10056 ve SY10057 kuralları geçerlidir; bu konumda işlem yapma yetkisi olmayan bir anahtar kullanıldığında SY90003 ile birlikte 403 döndürülür. Bağlantının kesilmesi konumu ve verilerini olduğu gibi korur; yalnızca o yayın platformuna giden senkronizasyon durur. Daha sonra doğru işletme kaydını bağlamak için sahibini yeniden bağlantı kurma URL'sine yönlendirin veya eşleştirme işlemini ve connect-listing işlemini çalıştırın.

Karşılaşacağınız hatalar

Hatalı biçimlendirilmiş istekler ve geçersiz anahtarlar için, message değeri hata koduyla başlayan üst düzey bir errors[] ile birlikte 4xx döndürülür. Yazma işlemleri, success: false ve data.<operation> içinde belirtilen nedenle birlikte 200 de döndürebilir; bu nedenle her yazma işleminin yanıt gövdesini kontrol edin. Tam liste Hata kodları sayfasındadır.

Kod veya durumAnlamıÇözüm
SY90016 (400)Bir POST üzerinde Read anahtarı kullanıldı.Write anahtarı kullanın.
SY90003 (403)Anahtarın bu konumun bağlantısını kurma veya kesme yetkisi yok.Konuma erişimi olan bir anahtar kullanın.
SY10056 (200)Bağlantı kesme isteğinde ne site ne de providerId gönderildi.İkisinden birini gönderin.
SY10057 (200)Konumun bu site için etkin bir bağlantısı yok.Kaldırılacak bağlantı yok; konumun işletme kayıtlarını kontrol edin.
SY81067 (200)create-from-listing işleminde connectedAccountListingId çözümlenemedi.Hesabın işletme kayıtlarını yeniden alın ve bir kaydın id değerini kullanın.
400, Variable "$input" ... was not providedGövde input içine yerleştirilmemişti veya zorunlu bir alan eksikti.Gövdeyi input altına yerleştirin; listingId yerine connectedAccountListingId kullanın.
400, geçersiz enumBir kaydın CONNECTED durumu, listeleme işlemindeki status filtresine girdi olarak verildi.Connected, NotConnected veya ConnectionIssue ile filtreleyin.
429İstek hızı sınırı aşıldı.Retry-After için bekleyin; İstek hızı sınırları sayfasına bakın.

Sonraki adımlar