تحميل شعار وصورة غلاف وصور

أرفق شعارًا وصورة غلاف وصورًا للمعرض بموقع عبر عناوين URL، واعرض المرفقات، وميّز الصورة الرئيسية بنجمة، وأزل ما لم يعد مناسبًا.

تُرفق الصور بموقع عبر عناوين URL عامة: تستضيف أنت الصورة، وتجلبها واجهة API وتخزّنها، ثم تسترجعها منصات النشر من هناك. يحتفظ الموقع بشعار واحد وصورة غلاف واحدة وأي عدد من الصور الإضافية، ويمكن تمييز ما يصل إلى أربع من الصور الإضافية بنجمة لمنحها أولوية في العرض.

1. التحميل عبر عنوان URL

يأخذ POST /locations/photos القيمة input.locationId ومصفوفة input.photos. يوضع عنوان URL لكل عنصر في حقل اسمه photo، وليس url. اضبط type صراحةً على LOGO أو COVER أو ADDITIONAL؛ ويُخزّن العنصر الذي لا يحتوي على type بوصفه صورة إضافية.

Upload
curl -X POST https://listingsapi.com/api/v4/locations/photos \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "photos": [      { "photo": "https://cdn.example.com/jenny-home/logo.png", "type": "LOGO" },      { "photo": "https://cdn.example.com/jenny-home/cover.jpg", "type": "COVER" },      { "photo": "https://cdn.example.com/jenny-home/storefront.jpg", "type": "ADDITIONAL" }    ]  }}'
JSON
{  "data": {    "addLocationPhotos": {      "success": true,      "request": {},      "photos": [        { "id": "TWVkaWFGaWxlOjU4Nzg5MzE=", "databaseId": 5878931, "type": "LOGO", "starred": false,          "url": "https://sy-media-store.s3-us-west-2.amazonaws.com/f868bb3f/59c670a3/f47d62a6.png" },        { "id": "TWVkaWFGaWxlOjU4Nzg5MzI=", "databaseId": 5878932, "type": "ADDITIONAL", "starred": false }      ],      "errors": null    }  }}

احتفظ بقيمة id لكل صورة: فهي ما تأخذه نقطتا النهاية للتمييز بنجمة والإزالة. تؤدي إعادة تحميل LOGO أو COVER إلى استبدال الموجود. تُخزّن الدفعة الصغيرة مباشرةً ضمن معالجة الطلب بهذا الشكل. أما الدفعة الكبيرة فتُضاف إلى قائمة الانتظار: يُعاد photos فارغًا وتُضبط قيمة request.requestId. حدّد مسار التنفيذ بناءً على وجود requestId، ثم استعلم دوريًا من GET /locations/photos/requests/{requestId}.

Poll a queued batch
curl https://listingsapi.com/api/v4/locations/photos/requests/e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a \-H "Authorization: API $LISTINGSAPI_KEY"
status للمهمةالمعنى
PROCESSINGلا يزال العمل جاريًا. استعلم مجددًا بعد بضع ثوانٍ.
SUCCESSانتهت المعالجة. ربما فشلت معالجة بعض الصور رغم ذلك، لذا اقرأ photos[].status وphotos[].errorMessage.
ERRORفشلت المهمة نفسها. افحص photos[].errorMessage.

2. عرض المرفقات

يُعيد GET /locations/{locationId}/photos كل ملفات الوسائط المرفقة بالموقع في مصفوفة بسيطة. استخدمه للتحقق من غياب الشعار أو صورة الغلاف قبل التحميل، ولجمع المعرّفات للخطوتين التاليتين. يقبل المسار المعرّف بترميز base64 أو الرقم دون ترميز.

List photos
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/photos \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "mediaFilesOfLocation": [      { "id": "TWVkaWFGaWxlOjU4Nzg5MzE=", "categoryName": "Logo", "categoryId": "4", "starred": false, "viewsCount": 0 },      { "id": "TWVkaWFGaWxlOjU4Nzg5MzI=", "categoryName": "Additional", "categoryId": "12", "starred": true, "viewsCount": 143 }    ]  }}

تكون قيمة categoryName هي Logo أو Cover أو Additional. يُعيد الموقع الذي لا يحتوي على وسائط مصفوفة فارغة، وليس خطأً.

3. تمييز الصور الإضافية بنجمة

يميّز POST /locations/photos/star الصور الإضافية لمنحها أولوية في العرض على منصات النشر التي تدعم الصور المميّزة. يمكن تمييز صور ADDITIONAL فقط بنجمة، بحد أقصى 4 لكل موقع؛ وتؤدي إضافة صورة خامسة إلى فشل الاستدعاء بأكمله مع SY15012. يمكنك أيضًا تمرير starred: true على عنصر وقت التحميل.

Star
curl -X POST https://listingsapi.com/api/v4/locations/photos/star \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "photoIds": ["TWVkaWFGaWxlOjU4Nzg5MzI="],    "starred": true  }}'
JSON
{  "data": {    "starUnstarLocationPhotos": {      "success": true,      "photos": [        { "id": "TWVkaWFGaWxlOjU4Nzg5MzI=", "type": "ADDITIONAL", "starred": true }      ],      "error": null    }  }}

مفتاح الاستجابة هو starUnstarLocationPhotos، ويحمل error مفردًا، وليس مصفوفة errors. تتحكم العلامة starred في جسم الطلب في الإجراء: أرسل false لإلغاء التمييز بنجمة. تأخذ دوال SDK القيمة المنطقية نفسها.

4. إزالة صورة

يفصل POST /locations/photos/remove الصور الإضافية عن الموقع باستخدام المعرّف. يبيّن removedCount عدد الصور التي فُصلت، لذا فإن 0 مع errors: null يعني أن أيًا من تلك المعرّفات لم يكن مرفقًا بهذا الموقع.

Remove
curl -X POST https://listingsapi.com/api/v4/locations/photos/remove \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "photoIds": ["TWVkaWFGaWxlOjU4Nzg5MzI="]  }}'
JSON
{  "data": {    "removeLocationPhotos": {      "removedCount": 1,      "errors": null    }  }}

يمكن إزالة صور ADDITIONAL فقط هنا. لتغيير الشعار أو صورة الغلاف، حمّل صورة جديدة بقيمة type تلك لتحل محل القديمة. تفصل الإزالة الملف عن الموقع؛ ولا تحذفه بالضرورة من مكتبة الوسائط لديك.

5. كيفية استخدام منصات النشر لكل خانة

الخانةالعددكيفية استخدام منصات النشر لها
LOGOواحد لكل موقعيُعرض بوصفه صورة الملف الشخصي أو العلامة التجارية. تؤدي إعادة تحميله إلى استبداله. لا يمكن تمييزه بنجمة أو إزالته عبر واجهة API.
COVERواحدة لكل موقعتُعرض بوصفها صورة الترويسة في إدراجات الأنشطة التجارية التي تتضمن صورة ترويسة. تنطبق عليها قواعد الشعار نفسها التي تسمح بالاستبدال فقط.
ADDITIONALأي عددالمعرض. هي القيمة الافتراضية عند إغفال type. قابلة للإزالة.
ADDITIONAL المميّزة بنجمةما يصل إلى 4تُمنح أولوية في العرض على منصات النشر التي تدعم الصور المميّزة، لذا قدّم أفضل صورك الخارجية والداخلية.

الخطوات التالية