REST /api/v1/notification-content 8 endpoints
GET /api/v1/notification-content/api/v1/notification-content

List all built notification content records

Public

Response Example

{
  "data": [
    {
      "id": "cnt_01HABC001",
      "scenario_type": "inactivity",
      "locale": "nb-NO",
      "title": "Vi savner deg!",
      "body": "Det har gått 9 dager siden sist du var aktiv. Klikk for å se hva som skjer.",
      "deep_link_route": "/home/feed",
      "built_at": "2026-03-26T09:00:00Z"
    },
    {
      "id": "cnt_01HABC002",
      "scenario_type": "certification_expiry",
      "locale": "en-US",
      "title": "Your certification expires soon",
      "body": "Your Safety Certification expires in 30 days. Renew now to stay active.",
      "deep_link_route": "/profile/certifications/cert_safety_003",
      "built_at": "2026-03-26T09:01:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 94
  }
}
GET /api/v1/notification-content/api/v1/notification-content/:id

Get a specific built notification content record

Public

Response Example

{
  "id": "cnt_01HABC001",
  "scenario_type": "inactivity",
  "locale": "nb-NO",
  "title": "Vi savner deg!",
  "body": "Det har gått 9 dager siden sist du var aktiv. Klikk for å se hva som skjer.",
  "deep_link_route": "/home/feed",
  "context_data": {
    "user_id": "usr_mentor_7821",
    "days_inactive": 9
  },
  "built_at": "2026-03-26T09:00:00Z"
}
POST /api/v1/notification-content/api/v1/notification-content

Build notification content for a given scenario type, context data, and locale

Public

Request Example

{
  "scenario_type": "inactivity",
  "context_data": {
    "user_id": "usr_mentor_7821",
    "days_inactive": 9,
    "user_first_name": "Kari"
  },
  "locale": "nb-NO"
}

Response Example

{
  "id": "cnt_01HABC099",
  "scenario_type": "inactivity",
  "locale": "nb-NO",
  "title": "Vi savner deg, Kari!",
  "body": "Det har gått 9 dager siden sist du var aktiv. Kom tilbake og se hva som skjer.",
  "deep_link_route": "/home/feed",
  "context_data": {
    "user_id": "usr_mentor_7821",
    "days_inactive": 9,
    "user_first_name": "Kari"
  },
  "built_at": "2026-03-26T09:30:00Z"
}
PUT /api/v1/notification-content/api/v1/notification-content/:id

Update a built notification content record (e.g. override copy)

Public

Request Example

{
  "title": "We miss you, Kari!",
  "body": "It's been 9 days. Come back and check what's new.",
  "locale": "en-US"
}

Response Example

{
  "id": "cnt_01HABC001",
  "scenario_type": "inactivity",
  "locale": "en-US",
  "title": "We miss you, Kari!",
  "body": "It's been 9 days. Come back and check what's new.",
  "deep_link_route": "/home/feed",
  "built_at": "2026-03-26T09:00:00Z"
}
DELETE /api/v1/notification-content/api/v1/notification-content/:id

Delete a notification content record

Public

Response Example

{
  "success": true,
  "deleted_id": "cnt_01HABC001"
}
GET /api/v1/notification-content/api/v1/notification-content/supported-scenarios

Get the list of all supported scenario types

Public

Response Example

{
  "scenario_types": [
    {
      "type": "inactivity",
      "description": "User has not been active for N days"
    },
    {
      "type": "milestone",
      "description": "User achieved a tracked milestone"
    },
    {
      "type": "certification_expiry",
      "description": "User certification expires within lead time"
    }
  ]
}
GET /api/v1/notification-content/api/v1/notification-content/templates/:scenarioType

Get the notification template for a scenario type and locale

Public

Response Example

{
  "scenario_type": "inactivity",
  "locale": "nb-NO",
  "title_template": "Vi savner deg, {{user_first_name}}!",
  "body_template": "Det har gått {{days_inactive}} dager siden sist du var aktiv. Klikk for å se hva som skjer.",
  "deep_link_template": "/home/feed",
  "required_context_fields": [
    "user_first_name",
    "days_inactive"
  ]
}
GET /api/v1/notification-content/api/v1/notification-content/deep-link-route

Resolve the deep link route for a scenario type and context data

Public

Response Example

{
  "scenario_type": "certification_expiry",
  "deep_link_route": "/profile/certifications/cert_safety_003",
  "deep_link_url": "eircodex://profile/certifications/cert_safety_003"
}

Additional Metadata

{
  "contract_summary": {
    "total_contracts": 410,
    "total_endpoints": 2416,
    "api_styles_used": [
      "rest"
    ]
  },
  "generated_at": "2026-03-26T06:55:53.316Z"
}