/api/v4/locations/photosCarica foto su una sede
Allega contenuti multimediali a una sede tramite URL pubblico dell'immagine o riferimenti a file già nella tua libreria multimediale.
Parametri
Corpo
Un campo annidato contrassegnato come obbligatorio si applica solo quando invii il campo padre. Se il padre è facoltativo e lo ometti, i suoi campi figli obbligatori non si applicano.
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| input.locationId | string | obbligatorio | The location's Base64-encoded Relay ID to attach media to. |
| input.photos | array of objects | obbligatorio | Images to attach. `photo` is the only required key on each item. |
| input.photos[].photo | string | obbligatorio | A publicly accessible JPEG or PNG URL that Listings API fetches and stores. The field is named `photo`, not `url`. |
| input.photos[].type | string | facoltativo | Which slot the image fills: `LOGO`, `COVER`, or `ADDITIONAL`. Defaults to an additional photo. |
| input.photos[].starred | boolean | facoltativo | Star the photo as it is attached, instead of a follow-up call to the star endpoint. Only additional photos can be starred, at most 4 per location. |
| input.photos[].source | string | facoltativo | Free-text label recording where the image came from. |
Richiesta di esempio
Corpo pronto da incollare. Sostituisci gli ID e i valori segnaposto con i tuoi.
{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "photos": [ { "photo": "https://cdn.example.com/jenny-home/logo.png", "type": "LOGO" }, { "photo": "https://cdn.example.com/jenny-home/storefront.jpg", "type": "ADDITIONAL" } ] }}Risposte
200Photos attached inline. Returns the created photo records; `errors` is null on success and `request` is empty because nothing was queued.
{ "data": { "addLocationPhotos": { "clientMutationId": null, "success": true, "request": {}, "photos": [ { "id": "TWVkaWFGaWxlOjU4Nzg5MzE=", "databaseId": 5878931, "url": "https://sy-media-store.s3-us-west-2.amazonaws.com/f868bb3f/59c670a3/f47d62a6.png", "thumbnailUrl": "https://sy-media-store.s3-us-west-2.amazonaws.com/f868bb3f/59c670a3/thumbnail_f47d62a6.png", "type": "LOGO", "starred": false }, { "id": "TWVkaWFGaWxlOjU4Nzg5MzI=", "databaseId": 5878932, "url": "https://sy-media-store.s3-us-west-2.amazonaws.com/f868bb3f/59c670a3/ef4ffb12.jpg", "thumbnailUrl": "https://sy-media-store.s3-us-west-2.amazonaws.com/f868bb3f/59c670a3/thumbnail_ef4ffb12.jpg", "type": "ADDITIONAL", "starred": false } ], "errors": null } }}401Unauthenticated, missing or invalid API key.
Allega una o più immagini a una sede. Fornisci un array photos in cui ogni elemento contenga almeno photo, un URL pubblico da cui Listings API recupera e memorizza l'immagine. locationId e un array photos non vuoto sono sempre obbligatori.
Due forme di esito positivo
Un piccolo gruppo di immagini viene caricato direttamente: photos contiene i contenuti multimediali caricati e request è un oggetto vuoto, come nell'esempio sopra. Un gruppo numeroso viene invece messo in coda e lo stesso 200 assume questa forma:
{ "data": { "addLocationPhotos": { "clientMutationId": null, "success": true, "request": { "requestId": "e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a", "status": "PROCCESSING" }, "photos": [], "errors": null } }}Entrambi indicano un esito positivo, quindi gestiscili verificando se request.requestId è presente anziché presumere che photos sia popolato.
Il campo dell'URL è photo. Non url e nemmeno image. Oltre a questo campo, ogni elemento accetta i campi facoltativi type (LOGO, COVER o ADDITIONAL), starred e source; per le integrazioni dei partner sono accettati anche publisherOverride e partnerMediaId. Una foto restituita non contiene il campo caption.
Caso d'uso: aggiungere le immagini iniziali di una nuova sede. Subito dopo aver creato una sede come "Jenny Home", usa POST per caricare il logo e le foto della facciata tramite URL in un'unica chiamata. La risposta restituisce il valore id di ogni nuova foto, che passerai successivamente agli endpoint per contrassegnare le foto come preferite e rimuoverle.
Caso d'uso: riutilizzare una risorsa approvata in più sedi. Inserisci lo stesso URL di un'immagine ospitata negli array photos di più sedi, in modo che tutte condividano la stessa risorsa di origine.
Aspetti a cui prestare attenzione.
- Le immagini devono essere in formato JPEG o PNG. Le regole sulle dimensioni della piattaforma di pubblicazione si applicano per categoria (in genere il limite minimo è di circa 10 KB e quello massimo di pochi MB).
- I gruppi numerosi vengono elaborati in modo asincrono. Quando il gruppo supera una dimensione definita sul server, la chiamata mette in coda il lavoro anziché caricare direttamente le immagini:
photosviene restituito vuoto erequest.requestIdviene impostato. Interroga periodicamenteGET /locations/photos/requests/{requestId}con quell'ID per monitorare il completamento. La soglia è una configurazione del server, quindi considera che "i gruppi numerosi possono essere messi in coda" anziché basarti su un numero fisso, e scegli il flusso da seguire in base alla presenza direquest.requestId. - Non usare
request.statusper scegliere il flusso da seguire. Nella risposta che indica la messa in coda, il suo valore è la stringa letteralePROCCESSING, scritta diversamente daPROCESSING, che l'endpoint di polling riporta per lo stesso processo. La presenza direquest.requestIdè il segnale affidabile. - Passare
starred: trueper un numero di foto preferite superiore al limite consentito di 4 fa fallire l'intera chiamata conSY15012. Il controllo conta le foto preferite già presenti nella sede più gli elementi contrassegnati come preferiti in questa richiesta. - Una sede conserva un solo logo e una sola copertina; caricare nuovamente un'immagine in una delle due categorie sostituisce l'immagine esistente.
- Imposta esplicitamente
typequando vuoi che un'immagine sia il logo o la copertina. In sua assenza, l'immagine viene memorizzata come foto aggiuntiva.
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/storefront.jpg", "type": "ADDITIONAL" } ] } }'