개요
관리 API는 admin scope API 키만 허용합니다. 토큰은 암호화하고 검색용 식별자는 HMAC fingerprint로 저장하며, 권한이 허용되고 lease가 유효한 바인딩만 발송 대상입니다. 동일 eventId + deviceId는 한 번만 provider에 제출됩니다.
관리자 디바이스 등록
curl -X POST https://backendwcs.com/api/cloud/v1/notify/devices \
-H "X-API-Key: $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalUserId": "u_12345",
"installationId": "0190f21a-4c20-7a15-b8d1-2fb0219c0101",
"platform": "ios",
"provider": "expo",
"permissionStatus": "granted",
"pushToken": "ExponentPushToken[xxxxxxxxxxxxx]"
}'Self 등록 증명
public scope 키는 목록·관리·발송 API를 사용할 수 없습니다. 등록은POST /devices/self, 해제는 DELETE /devices/self/:id를 사용하며, 테넌트의 신뢰 서버가 아래 canonical 문자열을 HMAC-SHA256으로 서명해야 합니다. timestamp 허용 오차는 5분이며 nonce는 재사용할 수 없습니다.
cloud-notify-self-v1
register | revoke
tenantId
externalUserId
installationId
timestamp(milliseconds)
nonce
sha256(pushToken) 또는 빈 문자열발송
curl -X POST https://backendwcs.com/api/cloud/v1/notify/send \
-H "X-API-Key: $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalUserId": "u_12345",
"eventId": "order:20260713:paid:8412",
"title": "결제가 완료되었습니다",
"body": "주문 #8412 결제가 처리되었습니다.",
"data": { "type": "order_paid", "orderId": "8412" }
}'전체 발송은 POST /send/broadcast를 사용하며 동일하게 immutableeventId가 필수입니다. FCM, Expo, APNs는 등록된 provider 값에 따라 분기되고, provider가 거절한 만료 토큰은 즉시 해제됩니다.
현재 계약
현재 Notify SaaS API는 디바이스 등록·해제·조회와 즉시 단건·브로드캐스트 발송을 제공합니다. 예약 발송, 템플릿 다국어 변환, 사용자 카테고리 설정, DLQ 자동 재시도, SDK는 아직 공개 계약에 포함되지 않습니다. 현재 FCM 토큰은 MOAI Cloud에 구성된 Firebase project, APNs 토큰은 구성된 단일 topic과 일치해야 하며, 테넌트별 provider 자격증명 등록은 아직 지원하지 않습니다.