Envie um logotipo, uma capa e fotos

Anexe logotipo, capa e fotos da galeria a um local por URL, liste os anexos, marque a imagem principal com estrela e remova itens desatualizados.

As fotos são anexadas a um local por URL pública: você hospeda a imagem, a API a busca e armazena, e as plataformas de publicação a recuperam de lá. Um local mantém um logotipo, uma capa e qualquer quantidade de fotos adicionais, e até quatro das fotos adicionais podem ser marcadas com uma estrela para receber posicionamento prioritário.

1. Envie por URL

POST /locations/photos recebe input.locationId e um array input.photos. A URL de cada item vai em um campo chamado photo, não url. Defina type explicitamente como LOGO, COVER ou ADDITIONAL; um item sem type é armazenado como uma foto adicional.

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    }  }}

Guarde o id de cada foto: é o que os endpoints de marcação com estrela e remoção recebem. Reenviar um LOGO ou COVER substitui o existente. Um lote pequeno é armazenado diretamente durante a requisição, desta forma. Já um lote grande é colocado na fila: photos retorna vazio e request.requestId é definido. Escolha o fluxo conforme a presença de requestId e, em seguida, consulte GET /locations/photos/requests/{requestId} periodicamente.

Poll a queued batch
curl https://listingsapi.com/api/v4/locations/photos/requests/e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a \-H "Authorization: API $LISTINGSAPI_KEY"
status da tarefaSignificado
PROCESSINGAinda em andamento. Consulte novamente após alguns segundos.
SUCCESSO processamento terminou. Ainda pode ter havido falhas em fotos individuais, então leia photos[].status e photos[].errorMessage.
ERRORA própria tarefa falhou. Inspecione photos[].errorMessage.

2. Liste o que está anexado

GET /locations/{locationId}/photos retorna todos os arquivos de mídia do local como um array simples. Use-o para verificar se falta um logotipo ou uma capa antes de enviar e para coletar os ids para as próximas duas etapas. O caminho aceita o id em base64 ou o número sem codificação.

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 ou Additional. Um local sem mídia retorna um array vazio, não um erro.

3. Marque fotos adicionais com uma estrela

POST /locations/photos/star marca fotos adicionais para posicionamento prioritário nas plataformas de publicação que oferecem suporte a imagens em destaque. Somente fotos ADDITIONAL podem ser marcadas com uma estrela, no máximo 4 por local; uma quinta faz toda a chamada falhar com SY15012. Você também pode passar starred: true em um item no momento do envio.

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    }  }}

A chave da resposta é starUnstarLocationPhotos e contém um único error, não um array errors. O sinalizador starred no corpo controla a ação: envie false para remover a estrela. Os métodos do SDK recebem o mesmo booleano.

4. Remova uma foto

POST /locations/photos/remove desvincula fotos adicionais por id. removedCount informa quantas foram desvinculadas, então 0 com errors: null significa que nenhum desses ids estava vinculado a este local.

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    }  }}

Somente fotos ADDITIONAL podem ser removidas aqui. Para alterar o logotipo ou a capa, envie uma nova imagem com esse type e ela substituirá a antiga. A remoção desvincula o arquivo do local; ela não necessariamente o exclui da sua biblioteca de mídia.

5. O que as plataformas de publicação fazem com cada posição

PosiçãoQuantidadeO que as plataformas de publicação fazem com ela
LOGOUm por localExibido como a imagem do perfil ou da marca. O reenvio o substitui. Não pode ser marcado com uma estrela nem removido pela API.
COVERUma por localExibida como a imagem de cabeçalho nas listagens que têm uma. Segue as mesmas regras do logotipo, permitindo apenas substituição.
ADDITIONALQualquer quantidadeA galeria. type padrão quando nenhum é informado. Pode ser removida.
ADDITIONAL com estrelaAté 4Recebem posicionamento prioritário nas plataformas de publicação que oferecem suporte a imagens em destaque, então priorize suas melhores fotos externas e internas.

Próximos passos