> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List activity

> List recent configuration and inventory-source changes on the storefront

`GET /api/v2/storefront/audit-logs`

Returns the storefront activity feed: recent configuration and inventory-source changes, with the actor and before/after values attributed per row. Filter by resource type, inventory source, and date range.

## Request

```bash curl theme={null}
curl -G https://api.apostra.com/api/v2/storefront/audit-logs \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  --data-urlencode "resourceTypes=STOREFRONT_INVENTORY_SOURCE" \
  --data-urlencode "inventorySourceId=source_abc123" \
  --data-urlencode "startDate=2026-03-01T00:00:00Z" \
  --data-urlencode "take=50"
```

## Parameters

| Field | Type | Required | Notes |
| - | - | - | - |
| `startDate` | string | No | ISO timestamp; include logs at or after this time |
| `endDate` | string | No | ISO timestamp; include logs at or before this time |
| `inventorySourceId` | string | No | Filter to a single storefront inventory source by source ID |
| `resourceTypes` | enum \| array | No | `STOREFRONT` or `STOREFRONT_INVENTORY_SOURCE`. Defaults to all storefront resource types |
| `actorOrigin` | enum | No | `human`, `agent`, `autonomous`, or `system`. `agent` surfaces only changes Murph made on a user's behalf; `human` only direct user changes |
| `outcome` | enum | No | `succeeded` (the default feed), `denied`, or `failed`. Omit to see only changes that took effect; pass `denied` for blocked attempts or `failed` for errored ones. The `denied`/`failed` views are not limited to the default resource types |
| `actorUserId` | integer | No | Filter to actions taken by a specific user (by user id) |
| `actorUserEmail` | string | No | Filter to actions taken by a specific user (by email) |
| `resourceId` | string | No | Filter to a single resource by its external id (e.g. an inventory source or advertiser id) |
| `actions` | enum \| array | No | Narrow to a subset of meaningful actions (e.g. only `DELETE`/`ARCHIVE`). Defaults to all meaningful actions |
| `take` | integer | No | Results to return, max `500` (default `50`) |
| `skip` | integer | No | Results to skip for pagination (default `0`) |

## Response

```json theme={null}
{
  "logs": [
    {
      "id": 90217,
      "timestamp": "2026-03-04T18:22:11Z",
      "createdAt": "2026-03-04T18:22:11Z",
      "action": "UPDATE",
      "resourceType": "STOREFRONT_INVENTORY_SOURCE",
      "resourceId": "source_abc123",
      "resourceName": "Northwind CTV",
      "userId": 4412,
      "userEmail": "ops@northwind.example",
      "userName": "Northwind Ops",
      "serviceTokenId": null,
      "serviceTokenName": null,
      "actorOrigin": "human",
      "outcome": "succeeded",
      "parameters": { "status": "ACTIVE" },
      "changes": { "status": { "from": "PENDING", "to": "ACTIVE" } },
      "description": "Activated inventory source Northwind CTV"
    }
  ],
  "total": 1
}
```

| Field | Type | Notes |
| - | - | - |
| `logs[]` | array | Audit rows, newest first |
| `logs[].action` | string | The change applied (e.g. `CREATE`, `UPDATE`, `DELETE`) |
| `logs[].resourceType` | string | `STOREFRONT` or `STOREFRONT_INVENTORY_SOURCE` |
| `logs[].resourceId` / `resourceName` | string \| null | The affected resource |
| `logs[].userId` / `userEmail` / `userName` | mixed \| null | Actor when a user made the change |
| `logs[].serviceTokenId` / `serviceTokenName` | mixed \| null | Actor when a service token made the change |
| `logs[].actorOrigin` | string \| null | How the action was initiated: `human`, `agent` (Murph acting on a user's behalf), `autonomous`, or `system` |
| `logs[].outcome` | string \| null | Whether the action took effect: `succeeded`, `denied` (blocked by policy/permission), or `failed` (errored mid-flight) |
| `logs[].parameters` | object \| null | Request parameters captured for the action |
| `logs[].changes` | object \| null | Before/after values |
| `logs[].description` | string | Human-readable summary |
| `total` | integer | Total matching rows (for pagination) |

## Who acted, and whether it took effect

Two fields answer the questions operators ask of any change:

* **`actorOrigin`** — was it a person, the agent, automation, or the platform? `agent` means Murph made the change on a user's behalf; `human` is a direct user change. Filter with `?actorOrigin=agent` to see only what the agent did.
* **`outcome`** — did it actually happen? The default feed returns only `succeeded` changes. To audit what was **blocked or failed**, pass `?outcome=denied` (blocked by policy or permission) or `?outcome=failed` (errored mid-flight). These attempt views intentionally widen beyond the default resource types so a denied attempt on any resource surfaces.

Connecting a payout account is recorded as a `REGISTER` action and is included in the default feed, so "who connected our payout account" is answerable here.

<Tip>
  Operators don't have to call this endpoint directly. In the storefront chat,
  `list_storefront_activity` (or `/activity`) opens Activity with separate Calls
  and Changes views. This endpoint powers Changes; `GET /api/v2/activity/calls`
  powers Calls. For newly recorded MCP calls from recognized hosts, the Calls
  response includes the diagnostic `mcpHost` hint; the Changes response
  documented on this page does not carry host attribution.
</Tip>

## Errors

* `400 VALIDATION_ERROR` — malformed date or `take` over `500`.
* `401 UNAUTHORIZED` — missing or invalid API key.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Activity tasks" href="/v2/storefront/activity/tasks" icon="list-check">
    All activity operations
  </Card>

  <Card title="Inventory sources" href="/v2/storefront/inventory-sources/overview" icon="plug">
    The sources these logs track
  </Card>

  <Card title="Get reporting metrics" href="/v2/storefront/activity/tasks/get-reporting-metrics" icon="chart-column">
    Delivery metrics
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.