上傳標誌、封面和相片
透過 URL 將標誌、封面圖片和相簿相片附加至地點、列出已附加的內容、為主打圖片加上星號,並移除過時的內容。
相片透過公開 URL 附加至地點:您負責託管圖片,API 會擷取並儲存圖片,發布平台再從該處取得圖片。每個地點會保留一張標誌、一張封面,以及不限數量的其他相片,其中最多可為 4 張其他相片加上星號,以優先展示。
1. 透過 URL 上傳
POST /locations/photos 接受 input.locationId 和 input.photos 陣列。每個項目的 URL 都放在名為 photo 的欄位中,而非 url。請明確將 type 設為 LOGO、COVER 或 ADDITIONAL;未提供 type 的項目會儲存為其他相片。
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" } ] }}'{ "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}。
curl https://listingsapi.com/api/v4/locations/photos/requests/e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a \-H "Authorization: API $LISTINGSAPI_KEY"2. 列出已附加的內容
GET /locations/{locationId}/photos 會以單純的陣列傳回地點上的所有媒體檔案。您可以在上傳前用它檢查是否缺少標誌或封面,並收集後續兩個步驟所需的 ID。路徑接受 base64 ID 或原始數字。
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/photos \-H "Authorization: API $LISTINGSAPI_KEY"{ "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。
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 }}'{ "data": { "starUnstarLocationPhotos": { "success": true, "photos": [ { "id": "TWVkaWFGaWxlOjU4Nzg5MzI=", "type": "ADDITIONAL", "starred": true } ], "error": null } }}回應的鍵為 starUnstarLocationPhotos,其內容是單一 error,而非 errors 陣列。主體中的 starred 旗標控制要執行的動作:傳送 false 即可取消星號。SDK 方法接受相同的布林值。
4. 移除相片
POST /locations/photos/remove 會依 ID 解除其他相片的附加關係。removedCount 會回報已解除附加關係的數量,因此 0 搭配 errors: null 表示這些 ID 都未附加至此地點。
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="] }}'{ "data": { "removeLocationPhotos": { "removedCount": 1, "errors": null } }}此處只能移除 ADDITIONAL 相片。若要變更標誌或封面,請使用該 type 上傳新圖片,新圖片便會取代舊圖片。移除操作會解除檔案與地點的附加關係;不一定會將檔案從您的媒體庫中清除。