> For the complete documentation index, see [llms.txt](https://v2.dataos.info/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://v2.dataos.info/references/interfaces/apis/api-reference/engagement.md).

# Engagement

Followers and notifications for the data product — who's subscribed, and what's happened recently.

## Followers

Subscribe to a data product, see who's following it, and track adoption over time.

**Base path:** `/api/v1/followers`

***

### POST /api/v1/followers

**Summary:** Follow this data product

**Description:** Subscribe the authenticated user. Idempotent — calling again when already following has no effect. Optional metadata (e.g. team, role) can be attached in the request body.

**cURL:**

```bash
curl -s -X POST https://$BASE_URL/api/v1/followers \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

**Returns:** JSON `Follower` object: `user_id`, `active`, `followed_at`, `updated_at`.

***

### GET /api/v1/followers

**Summary:** List active followers

**Description:** Returns active followers ordered by follow date (newest first).

**cURL:**

```bash
curl -s "https://$BASE_URL/api/v1/followers?limit=50" \
  -H "Authorization: Bearer $TOKEN"
```

**Returns:** JSON with `followers[]` — each has `user_id` and `followed_at` — plus `total` and pagination.

***

### GET /api/v1/followers/me

**Summary:** My follow status

**Description:** Returns whether the authenticated user is currently following, when they followed, and any metadata attached at follow time.

**cURL:**

```bash
curl -s https://$BASE_URL/api/v1/followers/me \
  -H "Authorization: Bearer $TOKEN"
```

**Returns:** JSON with `is_follower` (boolean), `user_id`, `active`, `followed_at`.

***

### DELETE /api/v1/followers/me

**Summary:** Unfollow this data product

**Description:** Removes the authenticated user's follow subscription.

**cURL:**

```bash
curl -s -X DELETE https://$BASE_URL/api/v1/followers/me \
  -H "Authorization: Bearer $TOKEN"
```

**Returns:** HTTP 200 with `Follower` object on success. HTTP 404 if the user was never following.

***

### GET /api/v1/followers/analytics

**Summary:** Follower analytics

**Description:** Without `granularity`, returns only the current active follower count. With `granularity` (`day`, `week`, or `month`), returns a time series showing follower counts per period.

**Key query params:** `granularity` (day/week/month), `limit`, `offset`

**cURL:**

```bash
# Current total only
curl -s https://$BASE_URL/api/v1/followers/analytics \
  -H "Authorization: Bearer $TOKEN"

# Monthly time series (last 3 months)
curl -s "https://$BASE_URL/api/v1/followers/analytics?granularity=month&limit=3" \
  -H "Authorization: Bearer $TOKEN"
```

**Returns:** JSON with `total_active` (always present). With `granularity`: also returns `series[]` — each bucket has `period_start`, `period_end`, `active_followers`.

***

## Notifications

A chronological event feed for the data product. Filter by run or plan for drill-down views.

***

### GET /api/v1/notifications

**Summary:** List notifications

**Description:** Returns notifications ordered newest first. Filter by run/plan ID or event type. Events include: `apply_start`, `apply_end`, `run_start`, `run_end`, `run_failure`, `audit_failure`, `dq_start`, `dq_end`, and more.

**Key query params:** `run_id`, `plan_id`, `events`, `start_ts`, `end_ts`, `limit`, `offset`

**cURL:**

```bash
curl -s "https://$BASE_URL/api/v1/notifications?limit=50" \
  -H "Authorization: Bearer $TOKEN"

# Filtered by run
curl -s "https://$BASE_URL/api/v1/notifications?run_id=8b299d19d22342d4a9348140353475e4" \
  -H "Authorization: Bearer $TOKEN"
```

**Returns:** JSON with `notifications[]` — each has `id`, `event`, `status` (success/failure/warning/info/progress), `summary`, `created_ts`, and `_links` to the associated run or plan.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://v2.dataos.info/references/interfaces/apis/api-reference/engagement.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
