Skip to content

업로드·알림·결제 ​

여러 서비스가 함께 쓰는 API입니다. 모두 로그인이 필요합니다.

파일 업로드 ​

파일은 API 서버를 거치지 않고 저장소로 바로 올립니다. 먼저 업로드 주소를 받고, 그 주소로 파일을 PUT 한 뒤, 받은 url을 데이터에 저장합니다.

ts
const ticket = await client.uploads.ticket({
  purpose: 'event',
  contentType: file.type,
  size: file.size,
});

await fetch(ticket.uploadUrl, { method: 'PUT', headers: ticket.headers, body: file });

await client.day.events.update(eventId, { image: ticket.url });

업로드 주소는 10분 동안 유효합니다. 운영 환경은 S3에 올리고 CDN 주소를 돌려주며, 로컬은 API 서버 디스크(/files/…)에 저장합니다.

purpose형식최대 크기
avatar이미지5MB
place, event, casting, product, proof이미지10MB
evidence이미지, PDF20MB
asset이미지, 오디오, 영상200MB

이미지는 JPEG·PNG·WebP·GIF, 오디오는 MP3·WAV·M4A·WebM, 영상은 MP4·WebM·MOV를 받습니다. 형식이나 크기가 맞지 않으면 티켓 발급 단계에서 400이 돌아옵니다.

알림 ​

ts
const { items, unread } = await client.notifications.list({ service: 'day' });
await client.notifications.readAll({ service: 'day' });

알림은 서비스별(day, studio)로 나뉩니다. service를 빼면 모든 서비스의 최근 알림 50개를 돌려줍니다. 각 항목의 href는 알림을 눌렀을 때 이동할 화면 경로입니다.

결제 내역 ​

ts
const payments = await client.payments.mine();

데이벤트 등록비와 스튜디오 크레딧 충전이 모두 여기에 쌓입니다. 지금은 모의 결제(PAYMENT_PROVIDER=mock)라 실제 청구는 일어나지 않습니다.