---
title: "Receive Sns Notification"
method: POST
path: "/api/v1/sns/notification"
tags: ["External: Apple Health Import"]
---

# Receive Sns Notification

`POST /api/v1/sns/notification`

Handle all SNS messages (subscription confirmation + S3 upload notifications).

## Response `202`

Successful Response

- UploadDataResponse — Response schema for data upload/sync operations. Returned when health data is queued for asynchronous processing via Celery. The actual import happens in the background - this response indicates the task was queued successfully.
  - `status_code` integer, required — HTTP status code (typically 202 for async operations)
  - `response` string, required — Human-readable response message
  - `user_id` string, nullable — User ID associated with the import operation
  - `dropped_count` integer — Number of individual records dropped by per-record validation
  - `records_saved` integer — Time-series samples saved
  - `records_inserted` integer — Time-series rows that did not exist before
  - `records_updated` integer — Time-series rows refreshed in place
  - `types` string[] — Canonical SeriesType identifiers written by this batch (e.g. 'heart_rate'), sorted. Empty when the batch saved no time-series samples.
  - `workouts_saved` integer — Workouts saved
  - `sleep_saved` integer — Sleep records saved

## Changes

- **2026-09-01** `c1934e149569` — 2 info
  - added the optional property `records_inserted` to the response with the `202` status
  - added the optional property `records_updated` to the response with the `202` status
- **2026-08-19** `8c15cc93d210` — 1 info
  - added the optional property `types` to the response with the `202` status
- **2026-07-31** `e91ac2fa9289` — 4 info
  - added the optional property `dropped_count` to the response with the `202` status
  - added the optional property `records_saved` to the response with the `202` status
  - added the optional property `sleep_saved` to the response with the `202` status
  - added the optional property `workouts_saved` to the response with the `202` status

[Change history](https://skmtc.dev/openwearables/apis/open-wearables-api/changes/api/v1/sns/notification/post.md)

---

[API](https://skmtc.dev/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.dev/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openwearables/open-wearables-api/revisions/c1934e149569/schema)
