/api/v4/locations/photosBir konuma fotoğraf yükleme
Herkese açık bir görsel URL'siyle veya medya kitaplığınızda zaten bulunan dosyalara referans vererek bir konuma medya ekler.
Parametreler
Gövde
Zorunlu olarak işaretlenen iç içe bir alan yalnızca üst alanını gönderdiğinizde geçerlidir. Üst alan isteğe bağlıysa ve onu göndermezseniz, zorunlu alt alanları da geçerli olmaz.
| Ad | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| input.locationId | string | zorunlu | The location's Base64-encoded Relay ID to attach media to. |
| input.photos | array of objects | zorunlu | Images to attach. `photo` is the only required key on each item. |
| input.photos[].photo | string | zorunlu | A publicly accessible JPEG or PNG URL that Listings API fetches and stores. The field is named `photo`, not `url`. |
| input.photos[].type | string | isteğe bağlı | Which slot the image fills: `LOGO`, `COVER`, or `ADDITIONAL`. Defaults to an additional photo. |
| input.photos[].starred | boolean | isteğe bağlı | 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 | isteğe bağlı | Free-text label recording where the image came from. |
Örnek istek
Yapıştırmaya hazır gövde. Yer tutucu kimlikleri ve değerleri kendi değerlerinizle değiştirin.
{ "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" } ] }}Yanıtlar
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.
Bir konuma bir veya daha fazla görsel ekler. Her öğenin en az photo içerdiği bir photos dizisi sağlayın; bu, Listings API'nin görseli alıp saklamak için kullandığı, herkese açık bir görsel URL'sidir. locationId ve boş olmayan bir photos dizisi her zaman gereklidir.
İki başarılı yanıt biçimi
Küçük bir toplu yükleme, çağrı sırasında tamamlanır: yukarıdaki örnekte olduğu gibi photos, yüklenmesi tamamlanan medyayı içerir ve request boş bir nesnedir. Büyük bir toplu yükleme ise kuyruğa alınır ve aynı 200 şu şekilde görünür:
{ "data": { "addLocationPhotos": { "clientMutationId": null, "success": true, "request": { "requestId": "e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a", "status": "PROCCESSING" }, "photos": [], "errors": null } }}Her ikisi de başarılıdır; bu nedenle bunları işlerken photos değerinin dolu olduğunu varsaymak yerine request.requestId öğesinin mevcut olup olmadığını kontrol edin.
URL alanı photo alanıdır. url veya image değildir. Bunun yanı sıra her öğe isteğe bağlı olarak type (LOGO, COVER veya ADDITIONAL), starred ve source kabul eder; iş ortağı entegrasyonları için publisherOverride ve partnerMediaId da kabul edilir. Döndürülen bir fotoğrafta caption alanı bulunmaz.
Kullanım örneği: yeni bir konumun ilk görsellerini ekleme. "Jenny Home" gibi bir konum oluşturduktan hemen sonra, logosunu ve vitrin fotoğraflarını URL aracılığıyla tek bir POST çağrısında yükleyin. Yanıt, her yeni fotoğrafın id değerini döndürür; bu değeri daha sonra yıldız ekleme ve kaldırma uç noktalarına iletirsiniz.
Kullanım örneği: onaylanmış bir görseli birden fazla konumda yeniden kullanma. Her konumun aynı kaynak görseli paylaşması için birden fazla konumun photos dizilerinde aynı barındırılan görsel URL'sini kullanın.
Dikkat edilmesi gerekenler.
- Görseller JPEG veya PNG biçiminde olmalıdır. Yayın platformlarının boyut kuralları kategori bazında uygulanır (tipik alt sınır yaklaşık 10 KB, üst sınır ise birkaç MB'dir).
- Büyük toplu yüklemeler eşzamansız olarak işlenir. Sunucu tarafında belirlenen toplu yükleme boyutu aşıldığında çağrı, yüklemeyi çağrı sırasında gerçekleştirmek yerine işi kuyruğa alır:
photosboş döner verequest.requestIdayarlanır. Tamamlanma durumunu takip etmek için bu kimlikleGET /locations/photos/requests/{requestId}uç noktasını düzenli aralıklarla sorgulayın. Eşik sunucu tarafında yapılandırılır; bu nedenle sabit bir sayı olduğunu varsaymak yerine "büyük toplu yüklemeler kuyruğa alınabilir" şeklinde değerlendirin verequest.requestIdöğesinin mevcut olup olmamasına göre işlem akışını belirleyin. request.statusdeğerine göre işlem akışını belirlemeyin. Kuyruğa alınan işin yanıtında bu değer, sorgulama uç noktasının aynı iş için bildirdiğiPROCESSINGdeğerinden farklı yazılanPROCCESSINGsabit metnidir. Güvenilir gösterge,request.requestIdöğesinin mevcut olmasıdır.- İzin verilen 4 yıldızlı fotoğraf sınırını aşacak şekilde
starred: trueiletilmesi, çağrının tamamınınSY15012ile başarısız olmasına neden olur. Bu kontrol, konumun mevcut yıldızlı fotoğrafları ile bu istekteki yıldızlı öğelerin toplamını sayar. - Bir konumda tek bir logo ve tek bir kapak görseli tutulur; bu kategorilerden herhangi birine yeniden yükleme yapılması mevcut görselin yerini alır.
- Bir görselin logo veya kapak olmasını istiyorsanız
typedeğerini açıkça ayarlayın. Bu değer olmadan görsel ek bir fotoğraf olarak saklanır.
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" } ] } }'