diff --git a/api-reference/notifications.mdx b/api-reference/notifications.mdx new file mode 100644 index 0000000..1508eca --- /dev/null +++ b/api-reference/notifications.mdx @@ -0,0 +1,204 @@ +--- +title: Notifications API +description: "In-app notification system for badges, referrals, achievements, and system events" +--- + +# Notifications API + +The notification system delivers in-app alerts for user engagement events including badge awards, referral conversions, level-ups, agent deployments, and login streak milestones. + +The notification endpoints are available on the web API. All endpoints require session authentication. + +## Get notifications + +```http +GET /api/notifications +``` + +Returns the authenticated user's notifications, ordered by creation date descending. + +### Query parameters + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `unreadOnly` | boolean | `false` | When `true`, returns only unread notifications | +| `limit` | integer | `20` | Maximum number of notifications to return | + +### Response + +```json +{ + "notifications": [ + { + "id": "notif_abc123", + "userId": "user_xyz", + "type": "badge", + "title": "New Badge Earned!", + "message": "You earned the 🚀 Getting Started badge!", + "read": false, + "data": { + "badgeName": "Getting Started", + "badgeIcon": "🚀" + }, + "createdAt": "2026-04-04T06:00:00.000Z" + }, + { + "id": "notif_def456", + "userId": "user_xyz", + "type": "achievement", + "title": "Level Up!", + "message": "Congratulations! You reached Level 3 - Intermediate", + "read": true, + "data": { + "level": 3, + "title": "Intermediate" + }, + "createdAt": "2026-04-03T12:00:00.000Z" + } + ] +} +``` + +### Response fields + +| Field | Type | Description | +|-------|------|-------------| +| `notifications` | array | List of notifications | +| `notifications[].id` | string | Unique notification identifier | +| `notifications[].userId` | string | User the notification belongs to | +| `notifications[].type` | string | Notification type (see types below) | +| `notifications[].title` | string | Notification headline | +| `notifications[].message` | string | Full notification message | +| `notifications[].read` | boolean | Whether the notification has been read | +| `notifications[].data` | object \| null | Type-specific metadata | +| `notifications[].createdAt` | string | ISO 8601 timestamp | + +### Notification types + +| Type | Description | Example trigger | +|------|-------------|----------------| +| `achievement` | Level-ups and streak milestones | Reaching a new level or login streak | +| `badge` | Badge awards | Earning a gamification badge | +| `referral` | Referral conversions | A referred user signing up | +| `system` | Platform announcements | Welcome-back messages after inactivity | +| `agent` | Agent lifecycle events | Agent deployed successfully | +| `message` | Message-related alerts | Message volume milestones | +| `billing` | Billing and subscription events | Subscription changes | + +### Errors + +| Code | Description | +|------|-------------| +| 401 | Unauthorized — no valid session | +| 500 | Failed to fetch notifications | + +--- + +## Get unread count + +```http +GET /api/notifications/unread-count +``` + +Returns the count of unread notifications for the authenticated user. Use this endpoint to display a notification badge in the UI without fetching all notification data. + +### Response + +```json +{ + "count": 3 +} +``` + +### Response fields + +| Field | Type | Description | +|-------|------|-------------| +| `count` | number | Number of unread notifications | + +### Errors + +| Code | Description | +|------|-------------| +| 401 | Unauthorized — no valid session | +| 500 | Failed to fetch unread count | + +--- + +## Mark notification as read + +```http +POST /api/notifications/read +``` + +Marks a single notification as read. + +### Request body + +```json +{ + "notificationId": "notif_abc123" +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `notificationId` | string | Yes | The notification ID to mark as read | + +### Response + +```json +{ + "success": true +} +``` + +### Errors + +| Code | Description | +|------|-------------| +| 400 | Missing `notificationId` | +| 401 | Unauthorized — no valid session | +| 500 | Failed to mark notification as read | + +--- + +## Mark all as read + +```http +POST /api/notifications/read-all +``` + +Marks all unread notifications as read for the authenticated user. + +### Response + +```json +{ + "success": true +} +``` + +### Errors + +| Code | Description | +|------|-------------| +| 401 | Unauthorized — no valid session | +| 500 | Failed to mark notifications as read | + +--- + +## Automatic notifications + +The following notifications are created automatically by the system when corresponding events occur. You do not need to call an endpoint to trigger them. + +| Event | Type | Title | Example message | +|-------|------|-------|-----------------| +| Badge awarded | `badge` | New Badge Earned! | "You earned the 🚀 Getting Started badge!" | +| Referral converted | `referral` | Referral Converted! | "Alice signed up using your referral link. You earned £10 credit!" | +| Level up | `achievement` | Level Up! | "Congratulations! You reached Level 3 - Intermediate" | +| Agent deployed | `agent` | Agent Deployed | "Your agent 'Atlas' is now live and ready to use!" | +| Login streak milestone | `achievement` | Login Streak! | "🔥 7 day login streak! Keep it up!" | +| Return after inactivity | `system` | Welcome Back! | "It's been 14 days! Here's what you missed..." | + +Return notifications are only sent when the user has been inactive for more than 7 days. Notifications older than 30 days that have been read are automatically cleaned up. diff --git a/api-reference/onboarding.mdx b/api-reference/onboarding.mdx new file mode 100644 index 0000000..cbf477f --- /dev/null +++ b/api-reference/onboarding.mdx @@ -0,0 +1,160 @@ +--- +title: Onboarding API +description: "Guided onboarding system for new users with step-by-step progress tracking" +--- + +# Onboarding API + +The onboarding system provides a guided first-time experience with seven steps that help new users set up their account and agents. + +The onboarding endpoints are available on the web API. All endpoints require session authentication. + +## Get onboarding progress + +```http +GET /api/onboarding +``` + +Returns the authenticated user's onboarding progress, including all steps and their completion status. Some steps are auto-completed based on user data (for example, the "Create Your First Agent" step completes automatically when you create an agent). + +### Response + +```json +{ + "userId": "user_abc123", + "completed": false, + "currentStep": 3, + "steps": [ + { + "id": "welcome", + "title": "Welcome to Agentbot", + "description": "Complete your profile and get familiar with the platform", + "action": "Get Started", + "link": "/settings", + "completed": true, + "order": 1 + }, + { + "id": "create_agent", + "title": "Create Your First Agent", + "description": "Build an AI agent that represents you or your brand", + "action": "Create Agent", + "link": "/dashboard/agents/new", + "completed": true, + "order": 2 + }, + { + "id": "deploy_agent", + "title": "Deploy Your Agent", + "description": "Launch your agent to the cloud and make it accessible", + "action": "Deploy", + "link": "/dashboard/deploy", + "completed": false, + "order": 3 + } + ], + "progress": 28 +} +``` + +### Response fields + +| Field | Type | Description | +|-------|------|-------------| +| `userId` | string | The authenticated user's ID | +| `completed` | boolean | Whether all onboarding steps are finished or the user skipped onboarding | +| `currentStep` | number | The `order` value of the next incomplete step | +| `steps` | array | All onboarding steps with completion status | +| `steps[].id` | string | Unique step identifier | +| `steps[].title` | string | Display title for the step | +| `steps[].description` | string | Short description of what the step involves | +| `steps[].action` | string | Call-to-action label for the step button | +| `steps[].link` | string | URL path the user should visit to complete the step | +| `steps[].completed` | boolean | Whether the step is complete (manual or auto-detected) | +| `steps[].order` | number | Step position (1–7) | +| `progress` | number | Completion percentage from 0 to 100 | + +### Onboarding steps + +| Order | Step ID | Title | Auto-completes when | +|-------|---------|-------|---------------------| +| 1 | `welcome` | Welcome to Agentbot | User has set a display name | +| 2 | `create_agent` | Create Your First Agent | User has at least one agent | +| 3 | `deploy_agent` | Deploy Your Agent | User has at least one agent | +| 4 | `connect_platform` | Connect a Platform | Manually marked complete | +| 5 | `customize_personality` | Customize Personality | Manually marked complete | +| 6 | `invite_team` | Invite Your Team | Manually marked complete | +| 7 | `earn_rewards` | Start Earning Rewards | Manually marked complete | + +### Errors + +| Code | Description | +|------|-------------| +| 401 | Unauthorized — no valid session | +| 404 | User not found | +| 500 | Failed to fetch onboarding progress | + +--- + +## Complete a step + +```http +POST /api/onboarding/complete +``` + +Marks an onboarding step as completed. When all seven steps are finished, the system automatically awards the "Getting Started" badge (see [gamification](/api-reference/gamification)). + +### Request body + +```json +{ + "stepId": "connect_platform" +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `stepId` | string | Yes | The `id` of the step to mark as complete | + +### Response + +```json +{ + "success": true +} +``` + +### Errors + +| Code | Description | +|------|-------------| +| 400 | Invalid or missing `stepId` | +| 401 | Unauthorized — no valid session | +| 500 | Failed to complete step | + +--- + +## Skip onboarding + +```http +POST /api/onboarding/skip +``` + +Skips the onboarding flow entirely. The onboarding status is recorded as `skipped` rather than `completed`. Users can still complete individual steps later from their dashboard. + +### Response + +```json +{ + "success": true +} +``` + +### Errors + +| Code | Description | +|------|-------------| +| 401 | Unauthorized — no valid session | +| 500 | Failed to skip onboarding | + +Onboarding progress is stored in the `UserSettings` table using keys prefixed with `onboarding_step_` and `onboarding_completed`. Completion status persists across sessions. diff --git a/api-reference/overview.mdx b/api-reference/overview.mdx index c26b916..b5fb708 100644 --- a/api-reference/overview.mdx +++ b/api-reference/overview.mdx @@ -290,6 +290,18 @@ curl -X POST https://agentbot.sh/api/ai/chat \ | `/api/dashboard/health` | GET | Get health status of backend services (no auth) | | `/api/dashboard/stats` | GET | Get dashboard stats (agent counts, skills, tasks) | | `/api/referrals` | GET | Get referral data, statistics, and referral link (session auth) | +| `/api/onboarding` | GET | Get onboarding progress and step completion status (session auth) | +| `/api/onboarding/complete` | POST | Mark an onboarding step as completed (session auth) | +| `/api/onboarding/skip` | POST | Skip the onboarding flow (session auth) | +| `/api/gamification/badges` | GET | Get badges earned by the authenticated user (session auth) | +| `/api/gamification/points` | GET | Get points, level, and progress toward next level (session auth) | +| `/api/gamification/streak` | POST | Record a login and update the streak counter (session auth) | +| `/api/gamification/check` | POST | Evaluate and award badges based on current activity (session auth) | +| `/api/gamification/leaderboard` | GET | Get top users ranked by points (no auth) | +| `/api/notifications` | GET | Get user notifications with optional unread filter (session auth) | +| `/api/notifications/unread-count` | GET | Get count of unread notifications (session auth) | +| `/api/notifications/read` | POST | Mark a notification as read (session auth) | +| `/api/notifications/read-all` | POST | Mark all notifications as read (session auth) | | `/api/stats` | GET | Get system stats (CPU, memory, uptime, health, deployment info) | | `/api/billing` | GET | Get billing info | | `/api/billing` | POST | Billing actions (`create-checkout`, `enable-byok`, `disable-byok`, `get-usage`, `buy-credits`) |