POST /api/admin-notify-status
POST /api/admin-notify-status
Update the status of a notify subscription.
Request
Method
POST
Headers
| Header | Value |
|---|---|
| Authorization | Bearer {ADMIN_API_TOKEN} |
| Content-Type | application/json |
Body
{
"id": "ntf_1706889600000-a1b2c3",
"productSlug": "oxi-one-mk2",
"status": "notified"
}
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Subscription ID to update |
productSlug | string | Yes | Product slug (used for blob key lookup) |
status | string | Yes | New status: pending, notified, unsubscribed |
Response
Success (200)
{
"success": true,
"subscription": {
"id": "ntf_1706889600000-a1b2c3",
"email": "user@example.com",
"productSlug": "oxi-one-mk2",
"status": "notified",
"createdAt": "2024-02-02T10:00:00.000Z",
"notifiedAt": "2024-02-05T14:30:00.000Z"
}
}
Status Transitions
| From | To | Side Effects |
|---|---|---|
pending | notified | Sets notifiedAt to current timestamp |
pending | unsubscribed | None |
notified | pending | Clears notifiedAt (sets to null) |
| Any | Any | Status is updated |
Not Found (404)
{
"success": false,
"error": "Subscription not found"
}
Validation Error (400)
{
"success": false,
"error": "Missing required fields: id, productSlug, status"
}
Unauthorized (401)
{
"success": false,
"error": "Unauthorized"
}
Example
cURL
# Mark as notified
curl -X POST https://takazudomodular.com/api/admin-notify-status \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "ntf_1706889600000-a1b2c3",
"productSlug": "oxi-one-mk2",
"status": "notified"
}'
# Reset to pending
curl -X POST https://takazudomodular.com/api/admin-notify-status \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "ntf_1706889600000-a1b2c3",
"productSlug": "oxi-one-mk2",
"status": "pending"
}'
JavaScript (fetch)
const response = await fetch('/api/admin-notify-status', {
method: 'POST',
headers: {
'Authorization': `Bearer ${ADMIN_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
id: 'ntf_1706889600000-a1b2c3',
productSlug: 'oxi-one-mk2',
status: 'notified',
}),
});
const data = await response.json();
if (data.success) {
console.log('Updated subscription:', data.subscription);
}
Implementation Details
Source File
netlify/functions/admin-notify-status.ts
Behavior
- Validates Bearer token authentication
- Validates required fields (id, productSlug, status)
- Fetches existing subscription from Netlify Blobs
- Updates status field
- Handles
notifiedAttimestamp:
- Sets to current time when status becomes
notified - Clears (sets to null) when status becomes
pending
- Saves updated subscription
- Returns the updated subscription object
Storage Key
Subscriptions are stored with the key format: notify/{productSlug}/{id}
Related
- POST /api/admin-notify-list - List subscriptions
- POST /api/notify-signup - Public signup endpoint