Sube un logotipo, una portada y fotos

Añade por URL un logo, una portada y fotos de galería a una ubicación; lista los adjuntos, marca con estrella la imagen principal y borra los obsoletos.

Las fotos se adjuntan a una ubicación mediante una URL pública: tú alojas la imagen, la API la descarga y la almacena, y las plataformas de publicación la recuperan desde allí. Una ubicación conserva un logotipo, una portada y cualquier número de fotos adicionales, y hasta cuatro de las fotos adicionales pueden marcarse con una estrella para darles prioridad de visualización.

1. Sube imágenes mediante URL

POST /locations/photos recibe input.locationId y un array input.photos. La URL de cada elemento va en un campo llamado photo, no url. Establece type explícitamente en LOGO, COVER o ADDITIONAL; un elemento sin type se almacena como 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    }  }}

Conserva el id de cada foto: es lo que reciben los endpoints para marcar con una estrella y eliminar. Volver a subir un LOGO o un COVER sustituye al existente. Un lote pequeño se almacena directamente, como se muestra aquí. Un lote grande, en cambio, se pone en cola: photos se devuelve vacío y se establece request.requestId. Elige la lógica que se ejecutará según si requestId está presente y, después, consulta periódicamente 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 del trabajoSignificado
PROCESSINGSigue en curso. Vuelve a consultar después de unos segundos.
SUCCESSEl procesamiento ha finalizado. Aun así, puede haber fotos individuales que hayan fallado, así que lee photos[].status y photos[].errorMessage.
ERROREl propio trabajo ha fallado. Examina photos[].errorMessage.

2. Enumera los archivos adjuntos

GET /locations/{locationId}/photos devuelve todos los archivos multimedia de la ubicación en un array simple. Úsalo para comprobar si falta un logotipo o una portada antes de subir imágenes y para recopilar los identificadores de los dos pasos siguientes. La ruta acepta el identificador en base64 o el número sin codificar.

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 es Logo, Cover o Additional. Una ubicación sin archivos multimedia devuelve un array vacío, no un error.

3. Marca fotos adicionales con una estrella

POST /locations/photos/star marca fotos adicionales para darles prioridad de visualización en las plataformas de publicación que admiten imágenes destacadas. Solo se pueden marcar con una estrella las fotos ADDITIONAL, con un máximo de 4 por ubicación; una quinta hace que falle toda la llamada con SY15012. También puedes pasar starred: true en un elemento al subirlo.

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

La clave de la respuesta es starUnstarLocationPhotos y contiene un único error, no un array errors. El indicador starred del cuerpo controla la acción: envía false para quitar la estrella. Los métodos del SDK reciben el mismo valor booleano.

4. Elimina una foto

POST /locations/photos/remove desvincula fotos adicionales por identificador. removedCount indica cuántas se han desvinculado, por lo que 0 con errors: null significa que ninguno de esos identificadores estaba vinculado a esta ubicación.

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

Aquí solo se pueden eliminar fotos ADDITIONAL. Para cambiar el logotipo o la portada, sube una imagen nueva con ese type y sustituirá a la anterior. La eliminación desvincula el archivo de la ubicación; no lo elimina necesariamente de tu biblioteca multimedia.

5. Qué hacen las plataformas de publicación con cada tipo de imagen

Tipo de imagenCantidadQué hacen las plataformas de publicación con ella
LOGOUna por ubicaciónSe muestra como imagen de perfil o de marca. Volver a subirla la sustituye. No se puede marcar con una estrella ni eliminar mediante la API.
COVERUna por ubicaciónSe muestra como imagen de cabecera en las fichas que tienen una. Se aplican las mismas reglas que al logotipo: solo se puede sustituir.
ADDITIONALCualquier númeroLa galería. type predeterminado cuando no se indica ninguno. Se puede eliminar.
ADDITIONAL con estrellaHasta 4Reciben prioridad de visualización en las plataformas de publicación que admiten imágenes destacadas, así que da preferencia a tus mejores fotos del exterior y del interior.

Próximos pasos