POST/api/v4/locations/photos

Bir 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.

API anahtarı gerektirir. Başlık biçimi ve anahtar yenileme için Kimlik doğrulama bölümüne bakın.

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.

AdTürZorunluAçıklama
input.locationIdstringzorunluThe location's Base64-encoded Relay ID to attach media to.
input.photosarray of objectszorunluImages to attach. `photo` is the only required key on each item.
input.photos[].photostringzorunluA publicly accessible JPEG or PNG URL that Listings API fetches and stores. The field is named `photo`, not `url`.
input.photos[].typestringisteğe bağlıWhich slot the image fills: `LOGO`, `COVER`, or `ADDITIONAL`. Defaults to an additional photo.
input.photos[].starredbooleanisteğ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[].sourcestringisteğ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.

Request body
{  "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.
Response
{  "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:

JSON
{  "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: photos boş döner ve request.requestId ayarlanır. Tamamlanma durumunu takip etmek için bu kimlikle GET /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 ve request.requestId öğesinin mevcut olup olmamasına göre işlem akışını belirleyin.
  • request.status değ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ği PROCESSING değerinden farklı yazılan PROCCESSING sabit 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: true iletilmesi, çağrının tamamının SY15012 ile 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 type değerini açıkça ayarlayın. Bu değer olmadan görsel ek bir fotoğraf olarak saklanır.
Request
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"        }      ]    }  }'