Contents
On this page

List Activity - Plugixa Advanced User Role Editor

GET /plugixa-aure/v1/activity

A page of activity log entries, newest first: every change to roles, people and the plugin’s rules, with who made it, where it came from, and the state before and after.

Needs the Edit roles permission: plugixa_aure_edit_roles. Needs Plugixa Advanced User Role Editor Pro with the Activity log feature switched on in Settings: otherwise the route is not registered and answers 404.

Request

GET https://your-site.example/wp-json/plugixa-aure/v1/activity?operation=role.capabilities&from=2026-11-01

Query parameters

Name Type Default Description
actor integer Entries made by this account id.
source string Where the change came from: screen, restore, import, revert, cli, background, rescue, api or admin. See the table below.
operation string An exact kind of change, such as role.capabilities or user.roles.
target string An exact target: a role slug, an account id or a capability.
from string From this UTC date, YYYY-MM-DD.
to string Up to and including this UTC date, YYYY-MM-DD.
page integer 1 Page to return, from 1.
per_page integer 25 Rows per page, 1 to 100.
source The change came from
screen Any request to this plugin’s routes, so also a script using this API
restore Restore From History
import Import Roles
revert Revert Activity Entry
cli WP-CLI
background WP-Cron, such as the later batches of a role migration
rescue The emergency rescue link
api Another REST route, such as WordPress’s own users endpoint
admin Anything else, such as the WordPress Users screen

operation is one of role.create, role.rename, role.delete, role.capabilities, capability.purge, user.roles, user.capabilities, user.rescue, users.migrate, settings, modules, redirects, menu.rules and cleanup.rules. The totals come inside data, and there is no page count: work it out from total.

Responses

200 OK. data is one page of entries.

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 318,
        "createdAt": "2026-11-12T09:30:00Z",
        "actorId": 1,
        "source": "screen",
        "operation": "role.capabilities",
        "target": "editor",
        "before": {
          "edit_posts": true,
          "publish_posts": true,
          "read": true
        },
        "after": {
          "edit_posts": true,
          "install_plugins": true,
          "publish_posts": true,
          "read": true
        },
        "context": {
          "granted": [
            "install_plugins"
          ],
          "revoked": [],
          "denied": [],
          "cleared": []
        },
        "restorePoint": 42,
        "revertedAt": null,
        "revertedBy": 0,
        "actor": "Sam Carter",
        "revertible": true
      },
      {
        "id": 317,
        "createdAt": "2026-11-12T09:12:03Z",
        "actorId": 1,
        "source": "screen",
        "operation": "user.roles",
        "target": "12",
        "before": {
          "roles": [
            "author"
          ]
        },
        "after": {
          "roles": [
            "author",
            "editor"
          ]
        },
        "context": [],
        "restorePoint": 41,
        "revertedAt": null,
        "revertedBy": 0,
        "actor": "Sam Carter",
        "revertible": true,
        "targetLabel": "Maria Lopez"
      }
    ],
    "total": 2
  }
}
Field Type Meaning
data.items[].id integer The entry’s id
data.items[].createdAt string UTC time, ISO 8601
data.items[].actorId integer Who made the change. 0 when nobody was signed in
data.items[].actor string Their display name, #<id> for a deleted account, empty for nobody
data.items[].source string Where it came from, see above
data.items[].operation string The kind of change
data.items[].target string What it changed. Empty for the rule and settings operations
data.items[].targetLabel string For user.* operations only: the account’s display name
data.items[].before, after object The state before and after, in the operation’s own shape
data.items[].context object|array Extra detail, such as the change lists or how many people a migration moved
data.items[].restorePoint integer The restore point that covers it. 0 when none
data.items[].revertedAt string|null When it was undone, ISO 8601
data.items[].revertedBy integer Who undid it. 0 when not undone
data.items[].revertible boolean Whether Revert Activity Entry can undo it on its own
data.total integer Entries matching, before paging

Errors

Status Code When
400 rest_invalid_param source is not one of the values above, or from/to is not YYYY-MM-DD.

Plus the errors every endpoint can return.

Examples

curl -s "https://your-site.example/wp-json/plugixa-aure/v1/activity?operation=role.capabilities&from=2026-11-01" \
  -u "admin:$WP_APP_PASSWORD"
<?php
$query = http_build_query([
    'operation' => 'role.capabilities',
    'from'      => '2026-11-01',
]);
$ch = curl_init('https://your-site.example/wp-json/plugixa-aure/v1/activity?' . $query);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => 'admin:' . getenv('WP_APP_PASSWORD'),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const query = new URLSearchParams({ operation: 'role.capabilities', from: '2026-11-01' });
const response = await fetch(`https://your-site.example/wp-json/plugixa-aure/v1/activity?${query}`, {
  headers: {
    'Authorization': 'Basic ' + btoa(`admin:${process.env.WP_APP_PASSWORD}`),
  },
});
const { data } = await response.json();

Quick Links

Share