Gönderiler

listingsapi-js SDK ile Google ve Facebook'ta duyurular, etkinlikler ve teklifler yayınlayın.

Gönderi metotları, Google Business Profile ve Facebook'ta içerik yayımlar, ardından site bazında yayımlanma durumunu ve analiz verilerini izlemenizi sağlar. Tüm gönderi metotları doğrudan ListingsAPI istemci örneğinde bulunur.

Yayımlama işlemi asenkrondur: oluşturma çağrıları status: 'INPROGRESS' döndürür ve gönderi arka planda yayımlanır. Durum SUCCESS olana kadar fetchPost ile düzenli aralıklarla sorgulama yapın ve site bazındaki hatalar için publishDetails[].submissionError alanını kontrol edin.

bulkPublish

Tek bir çağrıyla bir gönderiyi birden çok konum için Google ve Facebook'ta yayımlayın. sites varsayılan olarak her ikisini de içerir. Mesaj (veya site bazındaki eşleme), her site için bir girdi oluşturacak şekilde genişletilir, konum kimlikleri otomatik olarak kodlanır ve herhangi bir ağ çağrısından önce veri yükü istemci tarafında doğrulanır (geçersiz bir veri yükü hemen ValidationError hatasını fırlatır).

TypeScript
const result = await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809, 16810],message: 'Open until 10pm through the holidays!',mediaUrl: 'https://cdn.example.com/holiday.jpg',ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/holiday-hours',});console.log(result.socialPost.id, result.socialPost.status); // INPROGRESS, publishes async

Siteye özel metinler için message olarak bir nesne geçirin:

TypeScript
await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809],message: {  GOOGLE: 'Open until 10pm through the holidays. Book online!',  FACEBOOK: 'We are staying open late for the holidays. See you soon!',},});

Seçenekler

ParametreTürAçıklama
namestringDahili kampanya adı (müşterilere gösterilmez). Zorunludur.
locationIdsArray<string | number>Gönderinin yayımlanacağı konumlar (sayısal veya base64 kimlikleri). Zorunludur.
messagestring veya site bazında eşlemeTüm siteler için gönderi metni veya { GOOGLE, FACEBOOK } eşlemesi. Zorunludur.
sitesPostSite[]Hedef siteler; varsayılan değer ['GOOGLE', 'FACEBOOK'].
postTypePostTypeANNOUNCEMENT (varsayılan), EVENT, OFFER, COVID19 veya PRODUCT.
ctaTypePostCtaTypeBOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP veya GET_OFFER. ctaUrl gerektirir.
ctaUrlstringCTA düğmesinin yönlendireceği adres. ctaType gerektirir.
mediaUrlstringHer siteye eklenen, herkese açık görsel URL'si.
scheduledDatesobjectPlanlanmış yayımlama/sona erme için { startDatetime, endDatetime, removalSites }.
contextInfoobjectpostType gerektirdiğinde etkinlik veya teklif ayrıntıları.
additionalFieldsobjectİstek gövdesine olduğu gibi birleştirilen, iç içe olmayan ek camelCase alanları.

createAnnouncement

Bir ANNOUNCEMENT gönderisi oluşturun: isteğe bağlı CTA ve medya içeren düz bir mesaj. postType ve contextInfo dışında bulkPublish ile aynı seçenekleri alır; burada sites için varsayılan değer ['GOOGLE'].

TypeScript
await client.createAnnouncement({name: 'Grand Opening',locationIds: [16808],message: 'Acme Dental is now open in the Mission!',sites: ['GOOGLE'],ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/opening',});

createEvent

Bir başlık ve başlangıç/bitiş aralığı içeren bir EVENT gönderisi oluşturun. title zorunludur (Google bunu zorunlu kılar); startDay ve endDay, YYYY-MM-DD biçiminde tarihlerdir; startTime/endTime ise isteğe bağlı olarak gösterilen saatlerdir. sites için varsayılan değer ['GOOGLE'].

TypeScript
await client.createEvent({name: 'Live music',locationIds: [16808],message: 'Join us Friday for live jazz!',title: 'Jazz Night',startDay: '2026-08-01',endDay: '2026-08-01',startTime: '7:00pm',endTime: '10:00pm',});

createOffer

Kupon, indirim ve koşullar içeren bir OFFER gönderisi oluşturun. title zorunludur; diğer tüm teklif alanları isteğe bağlıdır. sites için varsayılan değer ['GOOGLE'].

TypeScript
await client.createOffer({name: 'Summer sale',locationIds: [16808],message: '20% off whitening all week!',title: 'Summer Sale',couponCode: 'SUMMER20',discount: '20%',redeemUrl: 'https://example.com/sale',termsConditions: 'One per customer.',startDay: '2026-08-01',endDay: '2026-08-07',});

Teklif seçenekleri

ParametreTürAçıklama
titlestringTeklif başlığı. Zorunludur.
couponCodestringMüşterilerin tekliften yararlanmak için kullandığı kod.
discountstringİndirim açıklaması, örneğin '20%'.
redeemUrlstringTekliften çevrimiçi yararlanma bağlantısı.
termsConditionsstringHüküm ve koşullar metni.
startDaystringTeklifin geçerlilik başlangıcı, YYYY-MM-DD.
endDaystringTeklifin geçerlilik sonu, YYYY-MM-DD.

createPost

İstemci tarafında doğrulama yapmadan, iç içe olmayan alanlardan oluşan ham bir gövdeden gönderi oluşturun. Metot, ilettiğiniz verileri API'nin gerektirdiği input nesnesiyle sarmalar; böylece ağ üzerinden gönderilen gövde {"input": {...}} olur; tamamen düz bir gövde HTTP 400 ile reddedilir. Bu gövdeyi sizin için oluşturan ve doğrulayan createAnnouncement, createEvent veya createOffer metotlarını tercih edin.

TypeScript
await client.createPost({postName: 'Grand Opening',locationIds: ['TG9jYXRpb246MTY4MDg='],postType: 'ANNOUNCEMENT',postSites: ['GOOGLE'],postMessage: [{ site: 'GOOGLE', message: 'We are now open!' }],});

fetchPost

Bir gönderiyi içeriği, site bazında yayımlanma durumu ve analiz verileriyle birlikte alın. Bir INPROGRESS gönderisini yayımlanana kadar düzenli aralıklarla sorgulamak için kullanın.

TypeScript
let post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg=='); while (post.status === 'INPROGRESS') {await new Promise((resolve) => setTimeout(resolve, 5000));post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg==');} for (const detail of post.publishDetails ?? []) {if (detail.submissionError) {  console.log('failed:', detail.submissionError);}}

deletePost

Bir gönderiyi silin ve yayımlandığı tüm sitelerden kaldırın.

TypeScript
await client.deletePost('U29jaWFsUG9zdDo0NDEyMg==');

fetchLocationPosts

Bir konumu hedefleyen gönderi kampanyalarını listeleyin. Ofset tabanlı sayfalama (page ve perPage) kullanır ve işlem tamamlandığında postsByLocation döndürür.

Bu yol tag seçeneğini reddettiği için SDK, 0.3.2 sürümünden itibaren geriye dönük uyumluluk amacıyla bu seçeneği kabul eder ve hiçbir zaman ağ üzerinden göndermez. Etiket filtrelemesine ihtiyaç duyduğunuzda fetchLocationBulkPosts kullanın.

TypeScript
const posts = await client.fetchLocationPosts(16808, { page: 1, perPage: 10 });

Seçenekler

ParametreTürAçıklama
tagstringBu yolda kabul edilir ancak gönderilmez. Yukarıdaki nota bakın.
pagenumberSayfa numarası (1'den başlar).
perPagenumberSayfa başına sonuç sayısı.
filtersobjectGönderi filtreleme alanları (otomatik olarak JSON biçiminde kodlanır).
sortFieldsobject{ field: 'created_at', order: 'Descending' } gibi bir sıralama nesnesi.

fetchBulkPost

Bir toplu kampanyayı konum bazında yayımlanma durumu ve analiz verileriyle birlikte alın.

TypeScript
const bulk = await client.fetchBulkPost('QnVsa1Bvc3Q6OTk=');

fetchLocationBulkPosts

Bir konumu içeren toplu (birden çok konuma yönelik) kampanyaları listeleyin. fetchLocationPosts ile aynı seçenekleri alır.

TypeScript
const campaigns = await client.fetchLocationBulkPosts(16808, { page: 1, perPage: 10 });