# project_activities

Project Activities

## Beschreibung

Unified recent-activity feed — answers
"what happened on this project / task / workspace lately?"
without enumerating every task.

Merges four sources, sorted newest-first:
  - project_event   (created / status_changed / target_changed /
                     lead_changed / name_changed)
  - project_update  (status updates the workspace posts on the project
                     Activity tab; includes health + body)
  - task_event      (task status / assignee / priority / due /
                     label / project / subtask changes)
  - task_comment    (comments on tasks within the project)

Default window: last 30 days, newest 50 entries.

Scoping (at least one of these is required):
  - project_id  proj_… prefix or slug — scope to one project
                (the primary mode; matches the tool's goal).
  - workspace_id     workspace prefix or key (ENG) — scope to all the
                workspace's projects.
  - task_id     task_… prefix or KEY-N — drill into one task's
                events + comments.

Modifiers (all optional):
  - kinds       array, any of project_event / project_update /
                task_event / task_comment.
  - created_at  ISO 8601 timestamp (2026-05-01T00:00:00Z) OR
                ISO 8601 duration (-P7D = last 7 days, -P1D =
                last 24h). Lower bound on created_at.
  - cursor      opaque, from a previous response's next_cursor.
  - limit       1-250, default 50.

Pagination: pass `next_cursor` from a previous response to fetch
the next older page. Per-row `id` is the prefix id of the
underlying record (pa_/pu_/act_/cmt_) and the `url` field is a
paste-able web URL.

Access: only entries from projects the caller can read are
returned (admin/employer see all account projects; regular
members see their workspaces' projects plus projects they lead).

## Zugriff

Zugriffsprofil: `gated`. Module: `projects_tasks`.
Die Freigabe im Profil ersetzt keine Account-, Workspace- oder Rollenberechtigung.

## Parameter

| Name | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `account_id` | string | Ja |  |
| `project_id` | string | Nein | Project prefix ID (proj_…) or slug. |
| `workspace_id` | string | Nein | Workspace prefix ID or key (e.g. ENG). |
| `task_id` | string | Nein | Task prefix ID (task_…) or issue key (e.g. ENG-3) — refines to one task. |
| `kinds` | array | Nein | Subset of activity sources to include. Defaults to all four. |
| `created_at` | string | Nein | Lower bound on created_at. ISO 8601 timestamp or ISO duration (-P7D, -P1D). |
| `cursor` | string | Nein | Opaque cursor from a previous response's next_cursor. |
| `limit` | integer | Nein | Max entries (default 50, max 250). |

## Eingabeschema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "account_id": {
      "type": "string"
    },
    "project_id": {
      "type": "string",
      "description": "Project prefix ID (proj_…) or slug."
    },
    "workspace_id": {
      "type": "string",
      "description": "Workspace prefix ID or key (e.g. ENG)."
    },
    "task_id": {
      "type": "string",
      "description": "Task prefix ID (task_…) or issue key (e.g. ENG-3) — refines to one task."
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "project_event",
          "project_update",
          "task_event",
          "task_comment"
        ]
      },
      "description": "Subset of activity sources to include. Defaults to all four."
    },
    "created_at": {
      "type": "string",
      "description": "Lower bound on created_at. ISO 8601 timestamp or ISO duration (-P7D, -P1D)."
    },
    "cursor": {
      "type": "string",
      "description": "Opaque cursor from a previous response's next_cursor."
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Max entries (default 50, max 250)."
    }
  },
  "required": [
    "account_id"
  ],
  "type": "object"
}
```

## Ausgabeschema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "project_event",
              "project_update",
              "task_event",
              "task_comment"
            ]
          },
          "event": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "actor": {
            "type": [
              "object",
              "null"
            ]
          },
          "project": {
            "type": [
              "object",
              "null"
            ],
            "description": "Null only for events of orphaned tasks (project deleted via dependent: :nullify)."
          },
          "task": {
            "type": [
              "object",
              "null"
            ]
          },
          "payload": {
            "type": [
              "object",
              "null"
            ]
          },
          "body_markdown": {
            "type": [
              "string",
              "null"
            ]
          },
          "health": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "created_at",
          "url"
        ]
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "events"
  ],
  "type": "object"
}
```
