上传徽标、封面和照片
通过 URL 为地点附加徽标、封面图片和图库照片,列出已附加的内容,为主图加星标,并移除过时的内容。
照片通过公开 URL 附加到地点:您托管图片,API 获取并存储图片,发布平台再从该存储位置获取图片。每个地点保留 1 个徽标、1 张封面和任意数量的附加照片,其中最多 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 以普通数组的形式返回地点上的所有媒体文件。您可以在上传前用它检查是否缺少徽标或封面,并收集后续 2 个步骤所需的 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 张;第 5 张会导致整个调用失败,并返回 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 上传新图片,新图片会替换旧图片。移除操作会解除文件与地点的关联;它不一定会从您的媒体库中彻底删除该文件。