다중 푸시 발송

작성자: admin 작성일: 2025-07-08 수정일: 2025-07-08
API Endpoint

POST /api/push/multiple

여러 구독자에게 동일한 푸시 알림을 한 번의 요청으로 발송합니다.
POST /api/push/multiple
Content-Type: application/json
X-API-Key: <서비스-API-키>
Origin: <등록된-도메인>

Parameters

subscriptions

푸시 알림을 받을 구독자들의 배열입니다. 각 요소는 표준 웹 푸시 구독 객체이며, 최소 1개부터 최대 1,000개까지 포함할 수 있습니다. 모든 구독자에게 동일한 payload 내용이 전송됩니다.

payload

모든 구독자에게 전송될 공통 알림 내용입니다. 웹 푸시 Notification API 규격을 따르며, 단일 푸시와 동일한 속성들을 사용할 수 있습니다.
필수 속성:
  • title (String) - 알림 제목 (최대 100자)
  • body (String) - 알림 본문 (최대 300자)
선택 속성:
  • icon (String) - 알림 아이콘 URL
  • image (String) - 큰 이미지 URL
  • badge (String) - 배지 아이콘 URL
  • url (String) - 클릭 시 이동할 URL
  • tag (String) - 그룹핑용 태그 (최대 50자)
  • requireInteraction (Boolean) - 사용자 상호작용 필요 여부
  • silent (Boolean) - 무음 알림 여부
  • data (Object) - 사용자 정의 데이터
  • actions (Array) - 액션 버튼 배열 (최대 2개)

options

모든 푸시 알림에 공통으로 적용될 전송 옵션들입니다. 모든 항목은 선택사항이며, 기본값으로도 정상 동작합니다.
  • TTL (Number) - 메시지 생존 시간(초), 0~2,419,200 (최대 4주)
  • urgency (String) - 우선순위: 'very-low', 'low', 'normal', 'high'
  • topic (String) - 메시지 분류용 토픽 (최대 32자)

Discussion

이 엔드포인트는 다수의 구독자에게 효율적으로 푸시 알림을 발송하기 위해 병렬 처리를 사용합니다. 모든 구독 정보의 유효성을 먼저 검사한 후, 동시에 여러 푸시를 발송하여 성능을 최적화합니다. 각 구독자별 발송 결과가 개별적으로 기록되며, 전체 통계와 에러 분석 정보를 제공합니다.
요청 제한: API 키당 분당 100회
구독자 제한: 요청당 최대 1,000개 구독자
페이로드 제한: 최대 4KB
인증: 유효한 X-API-Key 헤더와 Origin 검증 필요

응답 형식

성공 응답 (200 OK)

{
  "success": true,
  "message": "Multiple push notifications processed",
  "data": {
    "total": 100,
    "sent": 95,
    "failed": 5,
    "successRate": 95.0,
    "errorStats": {
      "expired": 3,
      "client_error": 2
    },
    "payloadSize": 256,
    "processingTime": 1250
  }
}

유효성 검사 실패 (400 Bad Request)

{
  "success": false,
  "message": "Invalid subscriptions found",
  "invalidSubscriptions": [
    {
      "index": 3,
      "error": "Missing p256dh key"
    },
    {
      "index": 7,
      "error": "Invalid endpoint URL"
    }
  ],
  "code": "INVALID_SUBSCRIPTIONS"
}

에러 응답 (401/403/429/500)

{
  "success": false,
  "message": "Payload too large",
  "code": "PAYLOAD_TOO_LARGE"
}

요청 예시

{
  "subscriptions": [
    {
      "endpoint": "https://fcm.googleapis.com/fcm/send/...",
      "keys": {
        "p256dh": "BGtFqB...",
        "auth": "rF3dm..."
      }
    },
    // ... 추가 구독자들
  ],
  "payload": {
    "title": "새로운 소식이 있습니다!",
    "body": "지금 확인해보세요.",
    "icon": "/icon-192x192.png",
    "url": "https://your-domain.com/news"
  },
  "options": {
    "TTL": 3600,
    "urgency": "normal"
  }
}

관련 API

단일 알림 발송

문서 검색