POST/api/v4/locations/photos

사업장에 사진 업로드

공개 이미지 URL을 사용하거나 미디어 라이브러리에 이미 있는 파일을 참조하여 사업장에 미디어를 첨부합니다.

API 키가 필요합니다. 헤더 형식과 키 교체는 인증을 참고하세요.

매개변수

본문

필수로 표시된 중첩 필드는 상위 필드를 보낼 때만 적용됩니다. 상위 필드가 선택 사항이고 이를 생략하면 필수 하위 필드도 적용되지 않습니다.

이름유형필수설명
input.locationIdstring필수The location's Base64-encoded Relay ID to attach media to.
input.photosarray of objects필수Images to attach. `photo` is the only required key on each item.
input.photos[].photostring필수A publicly accessible JPEG or PNG URL that Listings API fetches and stores. The field is named `photo`, not `url`.
input.photos[].typestring선택Which slot the image fills: `LOGO`, `COVER`, or `ADDITIONAL`. Defaults to an additional photo.
input.photos[].starredboolean선택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[].sourcestring선택Free-text label recording where the image came from.

요청 예시

바로 붙여 넣을 수 있는 본문입니다. 예시 ID와 값을 실제 값으로 바꾸세요.

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

응답

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.

사업장에 이미지를 1개 이상 첨부합니다. photos 배열을 제공하며, 각 항목에는 최소한 photo(Listings API가 가져와 저장하는 공개 이미지 URL)가 있어야 합니다. locationId와 비어 있지 않은 photos 배열은 항상 필수입니다.

2가지 성공 응답 형태

소규모 배치는 즉시 업로드됩니다. 위 예시처럼 photos에는 처리가 완료된 미디어가 담기고 request는 빈 객체입니다. 대규모 배치는 대신 대기열에 추가되며, 동일한 200은 다음과 같은 형태입니다.

JSON
{  "data": {    "addLocationPhotos": {      "clientMutationId": null,      "success": true,      "request": {        "requestId": "e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a",        "status": "PROCCESSING"      },      "photos": [],      "errors": null    }  }}

둘 다 성공 응답이므로, photos에 값이 있다고 가정하지 말고 request.requestId가 있는지 확인하여 처리합니다.

URL 필드는 photo입니다. url도 image도 아닙니다. 각 항목에는 이 필드와 함께 선택 사항인 type(LOGO, COVER 또는 ADDITIONAL), starred, source를 지정할 수 있으며, 파트너 통합을 위한 publisherOverride와 partnerMediaId도 허용됩니다. 반환된 사진에는 caption 필드가 없습니다.

사용 사례: 새 사업장의 초기 이미지 등록. "Jenny Home"과 같은 사업장을 생성한 직후, 한 번의 호출로 로고와 매장 외관 사진을 URL을 통해 POST로 업로드합니다. 응답은 새 사진 각각의 id를 반환하며, 이 값은 나중에 별표 지정 및 삭제 엔드포인트에 전달합니다.

사용 사례: 승인된 자산을 여러 사업장에서 재사용. 여러 사업장의 photos 배열에서 동일한 호스팅 이미지 URL을 참조하도록 지정하여 모든 사업장이 같은 원본 자산을 공유하게 합니다.

주의 사항.

  • 이미지는 JPEG 또는 PNG여야 합니다. 게시 플랫폼의 크기 규칙은 카테고리별로 적용됩니다(일반적으로 최소 약 10 KB, 최대 수 MB입니다).
  • 대규모 배치는 비동기적으로 처리됩니다. 서버 측 배치 크기 기준을 초과하면 호출은 즉시 업로드하는 대신 작업을 대기열에 추가하며, photos는 비어 있는 상태로 반환되고 request.requestId가 설정됩니다. 해당 id로 GET /locations/photos/requests/{requestId}를 폴링하여 완료 여부를 추적합니다. 임계값은 서버 측 설정이므로 고정된 숫자로 간주하지 말고 "대규모 배치는 대기열에 추가될 수 있음"으로 이해하고, request.requestId의 존재 여부에 따라 분기합니다.
  • request.status의 값에 따라 분기하지 마십시오. 대기열에 추가된 응답에서 이 값은 리터럴 문자열 PROCCESSING이며, 폴링 엔드포인트가 같은 작업에 대해 보고하는 PROCESSING과 표기가 다릅니다. request.requestId의 존재 여부가 신뢰할 수 있는 신호입니다.
  • 별표 지정이 허용되는 사진 수인 4개를 초과하도록 starred: true를 전달하면 전체 호출이 SY15012로 실패합니다. 이 검사는 사업장의 기존 별표 지정 사진 수와 이번 요청의 별표 지정 항목 수를 합산합니다.
  • 사업장에는 로고 1개와 커버 1개만 유지되며, 어느 카테고리든 다시 업로드하면 기존 이미지가 교체됩니다.
  • 이미지를 로고나 커버로 사용하려면 type을 명시적으로 설정합니다. 이 값이 없으면 이미지는 추가 사진으로 저장됩니다.
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"        }      ]    }  }'