channel enum Pin email, SMS, push or in-app recipient/content shape.
Generate channel-specific notifications with safe recipients, bounded send attempts and exact sent/delivered/read/failure dates.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
channel | enum | allowed: email | sms | push | inApp example: push | Pin email, SMS, push or in-app recipient/content shape. |
status | enum | allowed: queued | sent | delivered | read | failed example: delivered | Pin queued, sent, delivered, read or terminal failed state. |
template | enum | allowed: welcome | receipt | securityAlert | reminder example: securityAlert | Pin one synthetic content template. |
attemptCount | int | allowed: 1 – 4 example: 2 | Exact attempts for non-queued states; failed must equal maxAttempts. |
maxAttempts | int | default: 3 allowed: 1 – 4 example: 4 | Terminal retry limit, bounded to four. |
from | date | example: 2026-07-01 | Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. |
to | date | example: 2026-07-31T23:59:59.999Z | Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. |
channel enum Pin email, SMS, push or in-app recipient/content shape.
status enum Pin queued, sent, delivered, read or terminal failed state.
template enum Pin one synthetic content template.
attemptCount int Exact attempts for non-queued states; failed must equal maxAttempts.
maxAttempts int Terminal retry limit, bounded to four.
from date Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today.
to date Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: id,channel | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: attempts | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Distinct fictional notification ID. | ntf_91a3dc7200_00 |
channel | string | email | sms | push | inApp. | push |
template | string | Selected synthetic content template. | securityAlert |
recipient | object | Channel-specific safe destination type/value. | {"type":"push","value":"push_test_0123456789abcdef"} |
status | string | queued | sent | delivered | read | failed. | delivered |
createdAt | string (ISO 8601) | Creation time inside from/to. | 2026-07-10T08:00:00.000Z |
updatedAt | string (ISO 8601) | Latest attempt or lifecycle transition. | 2026-07-10T08:05:00.000Z |
sentAt nullable | string (ISO 8601) | Present for sent, delivered and read. | 2026-07-10T08:00:02.000Z |
deliveredAt nullable | string (ISO 8601) | Present for delivered and read. | 2026-07-10T08:05:00.000Z |
readAt nullable | string (ISO 8601) | Present only for read. | null |
attemptCount | integer | Exact nested-attempt count; zero while queued. | 2 |
maxAttempts | integer | Configured retry limit. | 4 |
error nullable | string | Last failure only for failed status. | null |
content | object | Stable subject/title/body/data shape with channel-specific nullable fields. | {"subject":null,"title":"Example security alert","body":"A fictional sign-in was recorded for fixture testing.","data":{"template":"securityAlert","fixture":true}} |
attempts | object[] | Zero to four chronological generic delivery attempts. | [{"number":1,"attemptedAt":"2026-07-10T08:00:01.000Z","durationMs":1000,"outcome":"accepted","response":"accepted for fixture delivery","error":null}] |
id string Distinct fictional notification ID.
example: ntf_91a3dc7200_00
channel string email | sms | push | inApp.
example: push
template string Selected synthetic content template.
example: securityAlert
recipient object Channel-specific safe destination type/value.
example: {"type":"push","value":"push_test_0123456789abcdef"}
status string queued | sent | delivered | read | failed.
example: delivered
createdAt string (ISO 8601) Creation time inside from/to.
example: 2026-07-10T08:00:00.000Z
updatedAt string (ISO 8601) Latest attempt or lifecycle transition.
example: 2026-07-10T08:05:00.000Z
sentAt string (ISO 8601) nullable Present for sent, delivered and read.
example: 2026-07-10T08:00:02.000Z
deliveredAt string (ISO 8601) nullable Present for delivered and read.
example: 2026-07-10T08:05:00.000Z
readAt string (ISO 8601) nullable Present only for read.
example: null
attemptCount integer Exact nested-attempt count; zero while queued.
example: 2
maxAttempts integer Configured retry limit.
example: 4
error string nullable Last failure only for failed status.
example: null
content object Stable subject/title/body/data shape with channel-specific nullable fields.
example: {"subject":null,"title":"Example security alert","body":"A fictional sign-in was recorded for fixture testing.","data":{"template":"securityAlert","fixture":true}}
attempts object[] Zero to four chronological generic delivery attempts.
example: [{"number":1,"attemptedAt":"2026-07-10T08:00:01.000Z","durationMs":1000,"outcome":"accepted","response":"accepted for fixture delivery","error":null}]
/api/notifications?channel=push&status=delivered&template=securityAlert&count=8&seed=42 {
"data": [
{
"id": "ntf_958016cfb6a5c85e_00",
"channel": "push",
"template": "securityAlert",
"recipient": {
"type": "push",
"value": "push_test_d40fb15863c1d1cff8728448a0b56b87"
},
"status": "delivered",
"createdAt": "2026-07-19T23:52:47.748Z",
"updatedAt": "2026-07-20T00:24:53.964Z",
"sentAt": "2026-07-19T23:58:53.964Z",
"deliveredAt": "2026-07-20T00:24:53.964Z",
"readAt": null,
"attemptCount": 2,
"maxAttempts": 3,
"error": null,
"content": {
"subject": null,
"title": "Example security alert",
"body": "A fictional sign-in was recorded for fixture testing.",
"data": {
"template": "securityAlert",
"fixture": true
}
},
"attempts": [
{
"number": 1,
"attemptedAt": "2026-07-19T23:52:49.119Z",
"durationMs": 2437,
"outcome": "failure",
"response": "temporary fixture failure",
"error": "temporary delivery failure"
},
{
"number": 2,
"attemptedAt": "2026-07-19T23:58:51.556Z",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/notifications?channel=email&status=failed&maxAttempts=4&count=6&seed=17 {
"data": [
{
"id": "ntf_755abf24f73252bc_00",
"channel": "email",
"template": "securityAlert",
"recipient": {
"type": "email",
"value": "fixture-fa677219@example.net"
},
"status": "failed",
"createdAt": "2026-07-14T19:08:44.521Z",
"updatedAt": "2026-07-14T19:23:49.796Z",
"sentAt": null,
"deliveredAt": null,
"readAt": null,
"attemptCount": 4,
"maxAttempts": 4,
"error": "synthetic provider timeout",
"content": {
"subject": "Example security alert",
"title": null,
"body": "A fictional sign-in was recorded for fixture testing.",
"data": {
"template": "securityAlert",
"fixture": true
}
},
"attempts": [
{
"number": 1,
"attemptedAt": "2026-07-14T19:08:44.815Z",
"durationMs": 2539,
"outcome": "failure",
"response": "temporary fixture failure",
"error": "temporary delivery failure"
},
{
"number": 2,
"attemptedAt": "2026-07-14T19:13:47.354Z",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/notifications?channel=inApp&status=read&template=reminder&from=2026-07-01&to=2026-07-31&count=5&seed=8 {
"data": [
{
"id": "ntf_c5a0ad10ec498125_00",
"channel": "inApp",
"template": "reminder",
"recipient": {
"type": "inApp",
"value": "usr_7ed05d64418bc8e6c2"
},
"status": "read",
"createdAt": "2026-07-26T18:21:40.335Z",
"updatedAt": "2026-07-26T20:41:42.667Z",
"sentAt": "2026-07-26T18:28:42.667Z",
"deliveredAt": "2026-07-26T18:52:42.667Z",
"readAt": "2026-07-26T20:41:42.667Z",
"attemptCount": 2,
"maxAttempts": 3,
"error": null,
"content": {
"subject": null,
"title": "Example reminder",
"body": "This is a synthetic reminder generated for a test.",
"data": {
"template": "reminder",
"fixture": true
}
},
"attempts": [
{
"number": 1,
"attemptedAt": "2026-07-26T18:21:41.408Z",
"durationMs": 1233,
"outcome": "failure",
"response": "temporary fixture failure",
"error": "temporary delivery failure"
},
{
"number": 2,
"attemptedAt": "2026-07-26T18:28:42.641Z",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates fictional multi-channel notification records for delivery dashboards and UI state tests. Email, SMS, push and in-app records use different safe recipient shapes and channel-appropriate subject/title fields while keeping one stable top-level schema.
The lifecycle is strict. Queued records have zero attempts and no delivery dates. Sent, delivered and read records end in one accepted attempt and add their dates in order. Failed records exhaust maxAttempts, contain only failed attempts and never claim they were sent. Every nested attempt is chronological and bounded to four.
Email uses reserved example.net; SMS uses the fictional North American 555-01xx range; push tokens begin push_test_; in-app destinations are synthetic user IDs. Attempt responses are generic fixture labels, not provider codes, and the endpoint makes no email/SMS/push vendor compatibility claim.
Yes. Email uses example.net, SMS uses the fictional 555-01xx range, push tokens are visibly prefixed push_test_, and in-app values are synthetic IDs.
Yes. sentAt < deliveredAt < readAt, and the final accepted attempt occurs before all three lifecycle transitions.
A failed fixture has exhausted maxAttempts; every attempt failed, error matches the last attempt, and sent/delivered/read dates remain null.
No. Recipients, response labels and fields are generic fixture data with no vendor wire-format claim.
Fake email addresses with name-derived usernames on guaranteed non-deliverable domains (example.com/net/org and .test) — or stamp your own with ?domain=.
Fake, correctly formatted phone numbers in E.164, international and national forms of the same number, using real country codes and lengths across 8 locales.
Complete fake people — name, age-consistent birth date, email, phone, job and address — with working filters for gender, age range and email domain.
Generate coherent fake audit records for authentication, CRUD and permission changes — safely seeded, filterable and bounded by time.