/api/v4/locations/{locationId}/bulk-postsجلب المنشورات الجماعية لموقع
يعيد صفحة من حملات المنشورات الجماعية (متعددة المواقع) التي تشمل موقعًا واحدًا.
المعلمات
المسار
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
| locationId | string | مطلوب | Base64-encoded location cursor / global ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). Pass it unchanged, do not URL-encode it. The base64 cursor always resolves; the raw numeric database ID also works on this endpoint, but the base64 form is the portable choice across the API. |
الاستعلام
| الاسم | النوع | مطلوب | الوصف | الافتراضي |
|---|---|---|---|---|
| page | integer | اختياري | 1-based page number for offset pagination. | 1 |
| perPage | integer | اختياري | Number of records per page. | — |
| filters | string | اختياري | JSON-encoded SocialPostFiltersInput (e.g. by `type`, `status`, `creationDateRange`, `siteUrls`). | — |
| sortFields | string | اختياري | JSON-encoded sort object `{ "field": "created_at", "order": "Descending" }`. `field` is one of name, type, status, created_at, schedule_start_date, schedule_end_date, client_name, clicks, views, shares. | — |
| locationIds | string | اختياري | JSON-encoded array of location IDs to include alongside the path location. | — |
| componentIdentifier | string | اختياري | Filter to campaigns created by a specific component/integration. | — |
الاستجابات
200A page of bulk campaigns that include the location. `records` is empty when no bulk campaign has targeted it.
{ "data": { "rollupSocialPosts": { "records": [ { "id": "U29jaWFsUG9zdDo1MTA4OA==", "name": "Diwali Offer - All Stores", "status": "SUCCESS", "type": "OFFER", "createdAt": "2026-06-20", "scheduledStartDate": "2026-06-22", "scheduledEndDate": "2026-07-06", "views": 4210, "clicks": 318, "shares": 12, "reactions": 87, "comments": 4, "sites": ["GOOGLE", "FACEBOOK"], "message": [ { "site": "GOOGLE", "message": "Festive savings across all our stores this week." }, { "site": "FACEBOOK", "message": "Festive savings across all our stores this week!" } ], "cta": [ { "type": { "value": "GET_OFFER", "label": "Get offer" }, "url": "https://jennyhome.example/diwali", "site": "GOOGLE", "tinyUrl": "https://tiny.cc/jh-diwali" } ], "contextInfo": { "couponCode": "DIWALI25", "redeemUrl": "https://jennyhome.example/diwali", "termsConditions": "Valid in-store only. Cannot be combined with other offers.", "title": "25% off storewide", "discount": "25%", "startDay": "2026-06-22", "endDay": "2026-07-06" }, "mediaUrl": [ { "url": "https://cdn.listingsapi.com/posts/51088/diwali.jpg", "site": "GOOGLE", "type": "IMAGE" } ], "publishDetails": [ { "site": "GOOGLE", "status": "PUBLISHED", "createdDate": "2026-06-20", "publishedDate": "2026-06-22", "submissionError": null }, { "site": "FACEBOOK", "status": "PUBLISHED", "createdDate": "2026-06-20", "publishedDate": "2026-06-22", "submissionError": null } ], "postLinks": [ { "site": "GOOGLE", "link": "https://www.google.com/maps/place/?post=51088" } ], "locationIds": [1800289, 1800290, 1800291], "clientName": "Jenny Home" } ], "locationDetails": [ { "id": "TG9jYXRpb246MTgwMDI4OQ==", "name": "Jenny Home", "street": "600 Congress Ave, Suite 200", "city": "Austin", "postalCode": "78701", "countryIso": "US", "stateIso": "TX", "stateName": "Texas", "storeId": null } ], "pageInfo": { "totalPages": 1, "hasNextPage": false, "hasPreviousPage": false, "totalRecords": 1 } } }}401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.
المنشور الجماعي هو حملة واحدة تُنشر في مواقع عديدة دفعة واحدة (وتُنشأ عبر POST /bulk-posts). تسرد نقطة النهاية هذه الحملات الجماعية التي تشمل الموقع المحدد، لتتمكن من الاطلاع على ملخصات مجمعة لمتاجر متعددة من منظور متجر واحد. بنية الاستجابة مطابقة لبنية استجابة GET /locations/{locationId}/posts؛ والفرق أن السجلات هنا تشمل عدة locationIds.
حالة استخدام: مطابقة نتائج إطلاق حملة على مستوى السلسلة. بعد إطلاق "عرض ديوالي" في جميع المتاجر، استدعِ GET /locations/1800289/bulk-posts من أي متجر منها للتأكد من وصول الحملة إليه، وفحص contextInfo المشترك (رمز القسيمة، والخصم، والشروط)، وقراءة publishDetails الخاص بكل موقع لرصد submissionError من FACEBOOK في ذلك الموقع.
نقاط تستدعي الانتباه.
- كما هو الحال في قائمة الموقع الواحد: يعتمد تقسيم النتائج إلى صفحات على الإزاحة عبر
page/perPage، وsortFieldsكائن واحد (وليس مصفوفة)، وقد يؤدي الاستعلام الدوري المكثف إلى إرجاع HTTP 429. - يمثل
locationIdsفي كل سجل المجموعة الكاملة التي استهدفتها الحملة، وسيحتوي على معرّفات إضافية إلى جانب المعرّف الموجود في المسار.
مصفوفة records أعلاه توضيحية. لا توجد حملات جماعية للموقع الفعلي المُدرج ضمن البيانات الأولية (Jenny Home)، لذا يعيد الاستدعاء الفعلي records: [] مع pageInfo.totalRecords: 0.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/bulk-posts' \ -H "Authorization: API $LISTINGSAPI_KEY"