上傳標誌、封面和相片

透過 URL 將標誌、封面圖片和相簿相片附加至地點、列出已附加的內容、為主打圖片加上星號,並移除過時的內容。

相片透過公開 URL 附加至地點:您負責託管圖片,API 會擷取並儲存圖片,發布平台再從該處取得圖片。每個地點會保留一張標誌、一張封面,以及不限數量的其他相片,其中最多可為 4 張其他相片加上星號,以優先展示。

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 會以單純的陣列傳回地點上的所有媒體檔案。您可以在上傳前用它檢查是否缺少標誌或封面,並收集後續兩個步驟所需的 ID。路徑接受 base64 ID 或原始數字。

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 會依 ID 解除其他相片的附加關係。removedCount 會回報已解除附加關係的數量,因此 0 搭配 errors: null 表示這些 ID 都未附加至此地點。

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每個地點 1 張顯示為商家檔案圖片或品牌圖片。重新上傳會取代現有圖片。無法透過 API 加上星號或移除。
COVER每個地點 1 張在具有頁首圖片的商家資訊中顯示為頁首圖片。與標誌一樣,只能替換。
ADDITIONAL不限數量相簿。未指定時,type 的預設類別。可移除。
已加上星號的 ADDITIONAL最多 4 張在支援精選圖片的發布平台上優先展示,因此請優先選用您最佳的外觀與室內相片。

後續步驟