## List activity logs

Returns a paginated list of merchant-scoped activity for supported transaction,
billing, and team events. Each row includes actor information, the parent resource,
and optional plan or refund identifiers.

The response includes cursor-based pagination with `previous` and `next` cursors
that can be used to navigate through the activity history.

Use the search arguments to narrow results by activity type, actor, object,
parent resource, or creation date.

## Endpoint signature

```http
POST https://api.reservepay.com/merchants/list-activity-logs HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <token>

{
  per_page: number?,
  after: string?,
  before: string?,
  activity_type: string?,
  actor_email: string?,
  actor_key_id: string?,
  object_id: string?,
  parent_id: string?,
  created_at: string?,
  terms: string?,
}
```

Returns: object

## Request arguments

### `per_page` (number)

_Optional_. Number of activity log entries to return per page (default: 25).

### `after` (string)

_Optional_. Cursor for pagination - return entries created before this activity log UID.

### `before` (string)

_Optional_. Cursor for pagination - return entries created after this activity log UID.

### `activity_type` (string)

_Optional_. Filter by activity type. Supported values:

#### Activity Groups
* `dispute`: Includes all merchant-facing dispute status changes. Includes `dispute_challenged`, `dispute_escalated`, `dispute_conceded`.

#### Individual Activities
* `dispute_challenged`: The dispute is being challenged by the merchant.
* `dispute_conceded`: The merchant has conceded the dispute.
* `dispute_escalated`: The dispute has been escalated to the provider.
* `invitation_accepted`: An invitation to join the merchant team was accepted.
* `payment_captured`: The payment funds have been captured.
* `payment_reversed`: The payment was reversed (refunded or charged back).
* `payment_voided`: The payment was voided and will not be processed.
* `payout_created`: The payout record was created.
* `plan_switched`: The merchant switched their subscription plan.
* `refund_created`: A refund request was created.
* `user_invited`: A new user was invited to the merchant team.
* `user_removed`: A user was removed from the merchant team.

Allowed values:

- `dispute`
- `dispute_challenged`
- `dispute_conceded`
- `dispute_escalated`
- `invitation_accepted`
- `payment_captured`
- `payment_reversed`
- `payment_voided`
- `payout_created`
- `plan_switched`
- `refund_created`
- `user_invited`
- `user_removed`

### `actor_email` (string)

_Optional_. Filter by dashboard user email of the actor.

### `actor_key_id` (string)

_Optional_. Filter by API key UID of the actor.

### `object_id` (string)

_Optional_. Filter by the object this activity is about (maps to the log subject UID: payment, refund, payout, or merchant).

### `parent_id` (string)

_Optional_. Filter by parent resource UID stored on the activity log (e.g. payment UID for a refund).

### `created_at` (string)

_Optional_. Filter by creation date/time. Supports: YYYY-MM-DD, ISO8601 datetimes, ranges (YYYY-MM-DD..YYYY-MM-DD), or keywords (`today`, `yesterday`, `this_week`, `last_week`, `this_month`, `last_month`).

### `terms` (string)

_Optional_. Free-text search (substring, case-insensitive) across actor email, team member email, object UID, and parent resource UID.

## Response attributes

### `previous` (object)

_Nullable_. Cursor for the previous page. Contains 'before' (ID) and 'per_page' (page size) parameters. Use these values in the 'before' and 'per_page' parameters of the next request to get the previous page.

### `page` (array)

**Always present**. The current page of records, ordered by creation date (newest first).

### `next` (object)

_Nullable_. Cursor for the next page. Contains 'after' (ID) and 'per_page' (page size) parameters. Use these values in the 'after' and 'per_page' parameters of the next request to get the next page.

## Errors specific to this endpoint

### `NOT_FOUND`

The actor_email or actor_key_id does not belong to this merchant.

## Errors common to all endpoints

### `UNHANDLED_ERROR`

This error occurs when the server encounters an unexpected internal error that
it cannot handle gracefully. This typically happens due to bugs, infrastructure
issues, or edge cases that weren't anticipated during development.

### `INVALID_ARGUMENTS`

This error occurs when the request contains invalid or missing parameters.
Common cases include missing required fields, or values that don't match the
expected format or type.

### `BAD_VERSION`

This error occurs when making requests to an API version that does not exist.
This commonly happens when using an outdated SDK or when the API version
specified in the request URL is incorrect.
