上传徽标、封面和照片

通过 URL 为地点附加徽标、封面图片和图库照片,列出已附加的内容,为主图加星标,并移除过时的内容。

照片通过公开 URL 附加到地点:您托管图片,API 获取并存储图片,发布平台再从该存储位置获取图片。每个地点保留 1 个徽标、1 张封面和任意数量的附加照片,其中最多 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 以普通数组的形式返回地点上的所有媒体文件。您可以在上传前用它检查是否缺少徽标或封面,并收集后续 2 个步骤所需的 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 张;第 5 张会导致整个调用失败,并返回 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 张在支持精选图片的发布平台上优先展示,因此请把最好的外景和室内照片放在前面。

后续步骤