{"openapi":"3.1.0","info":{"title":"Notifications API","version":"1.0.0","description":"Inbox, templates, sends, preferences, and bulk notification workflows Exported as an OpenAPI 3.1 document from Fake API for Devs."},"servers":[{"url":"https://fakeapifordevs.vercel.app","description":"Fake API for Devs production endpoint"}],"tags":[{"name":"Notifications","description":"Inbox, templates, sends, preferences, and bulk notification workflows"}],"paths":{"/api/notifications":{"get":{"tags":["Notifications"],"summary":"GET /api/notifications?user_id=user_123&unread_only=true","operationId":"notifications_get_notifications","parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"1-indexed page number for collection endpoints."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"description":"Page size for collection endpoints."},{"name":"q","in":"query","schema":{"type":"string"},"description":"Optional text search filter where supported."},{"name":"delay","in":"query","schema":{"type":"number","minimum":0,"maximum":10},"description":"Optional artificial delay in seconds."},{"name":"simulate_error","in":"query","schema":{"type":"string","enum":["rate_limit","server_error","not_found","unauthorized","forbidden","bad_request","service_unavailable","timeout","malformed"]},"description":"Force a mock failure scenario for resilience testing."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}},"post":{"tags":["Notifications"],"summary":"POST /api/notifications","operationId":"notifications_post_notifications","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"user_id":"user_123","title":"Your mock charge succeeded","message":"Tap to see the Fake API for Devs receipt.","action_url":"/billing/history"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}},"patch":{"tags":["Notifications"],"summary":"PATCH /api/notifications","operationId":"notifications_patch_notifications","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"notification_id":"notif_1","read":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}},"delete":{"tags":["Notifications"],"summary":"DELETE /api/notifications?notification_id=notif_1","operationId":"notifications_delete_notifications","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"domain":"notifications","message":"Customize this payload to match your integration scenario.","timestamp":"2026-05-20T06:15:56.564Z"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}}},"/api/notifications/templates":{"get":{"tags":["Notifications"],"summary":"GET /api/notifications/templates","operationId":"notifications_get_notifications_templates","parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"1-indexed page number for collection endpoints."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"description":"Page size for collection endpoints."},{"name":"q","in":"query","schema":{"type":"string"},"description":"Optional text search filter where supported."},{"name":"delay","in":"query","schema":{"type":"number","minimum":0,"maximum":10},"description":"Optional artificial delay in seconds."},{"name":"simulate_error","in":"query","schema":{"type":"string","enum":["rate_limit","server_error","not_found","unauthorized","forbidden","bad_request","service_unavailable","timeout","malformed"]},"description":"Force a mock failure scenario for resilience testing."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}}},"/api/notifications/send":{"post":{"tags":["Notifications"],"summary":"POST /api/notifications/send","operationId":"notifications_post_notifications_send","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"user_id":"user_123","channel":"email","title":"Deployment ready","message":"Your preview is live and ready for review.","action_url":"/status"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}}},"/api/notifications/preferences/user_123":{"get":{"tags":["Notifications"],"summary":"GET /api/notifications/preferences/user_123","operationId":"notifications_get_notifications_preferences_user_123","parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"1-indexed page number for collection endpoints."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"description":"Page size for collection endpoints."},{"name":"q","in":"query","schema":{"type":"string"},"description":"Optional text search filter where supported."},{"name":"delay","in":"query","schema":{"type":"number","minimum":0,"maximum":10},"description":"Optional artificial delay in seconds."},{"name":"simulate_error","in":"query","schema":{"type":"string","enum":["rate_limit","server_error","not_found","unauthorized","forbidden","bad_request","service_unavailable","timeout","malformed"]},"description":"Force a mock failure scenario for resilience testing."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}}},"/api/notifications/batch":{"delete":{"tags":["Notifications"],"summary":"DELETE /api/notifications/batch?ids=notif_0001,notif_0002","operationId":"notifications_delete_notifications_batch","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"ids":["notif_0001","notif_0002"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"429":{"description":"Rate limited"},"500":{"description":"Internal server error"}}}}}}