MainWP registers 13 update management abilities into the WordPress Abilities API framework. These enable programmatic control over WordPress core, plugin, theme, and translation updates across your network.
What You’ll Learn
- Listing available updates across all sites
- Applying WordPress core, plugin, theme, and translation updates
- Managing ignored updates
- Batch update operations
mainwp/list-updates-v1
List available updates across all sites.
Method: GET (readonly)
curl -u 'admin:xxxx' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/list-updates-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_ids_or_domains | array | No | [] | Filter to specific sites |
types | array | No | [] | Filter: core, plugins, themes, translations |
page | integer | No | 1 | Page number |
per_page | integer | No | 50 | Items per page (max 200) |
Response:
{
"updates": [
{
"site_id": 1,
"site_url": "https://site1.example.com",
"site_name": "Site 1",
"type": "plugin",
"slug": "akismet/akismet.php",
"name": "Akismet Anti-spam",
"current_version": "5.3",
"new_version": "5.3.1"
}
],
"summary": {
"core": 2,
"plugins": 15,
"themes": 3,
"translations": 5,
"total": 25
},
"page": 1,
"per_page": 50,
"total": 25
}
mainwp/run-updates-v1
Execute updates on sites. Operations affecting more than 200 sites are queued for background processing.
Method: POST
# Update specific plugin on all sites
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"types":["plugins"],"specific_items":["akismet/akismet.php"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/run-updates-v1/run'
# Update all plugins on specific sites
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_ids_or_domains":[1,2,3],"types":["plugins"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/run-updates-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_ids_or_domains | array | No | [] | Sites to update. Empty = all with updates |
types | array | No | [] | Update types: core, plugins, themes, translations |
specific_items | array | No | [] | Specific slugs to update |
Response:
{
"updated": [
{
"site_id": 1,
"site_url": "https://site1.example.com",
"site_name": "Site 1",
"type": "plugin",
"slug": "akismet/akismet.php",
"name": "Akismet",
"old_version": "5.3",
"new_version": "5.3.1"
}
],
"errors": [],
"summary": {
"total_updated": 5,
"total_errors": 0,
"sites_updated": 3
}
}
mainwp/get-site-updates-v1
Get available updates for a single site.
Method: POST
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/get-site-updates-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
types | array | No | [] | Filter: core, plugins, themes, translations |
Response:
{
"site_id": 1,
"site_url": "https://site1.example.com",
"site_name": "Site 1",
"updates": [
{
"type": "plugin",
"slug": "akismet/akismet.php",
"name": "Akismet",
"current_version": "5.3",
"new_version": "5.3.1"
}
],
"summary": {
"core": 0,
"plugins": 3,
"themes": 1,
"translations": 2,
"total": 6
}
}
mainwp/update-site-core-v1
Update WordPress core on a single site.
Method: POST
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-site-core-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
Response:
{
"site_id": 1,
"site_url": "https://site1.example.com",
"updated": true,
"old_version": "6.4.1",
"new_version": "6.4.2"
}
mainwp/update-site-plugins-v1
Update plugins on a single site.
Method: POST
# Update specific plugins
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"slugs":["akismet/akismet.php"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-site-plugins-v1/run'
# Update all plugins
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-site-plugins-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
slugs | array | No | [] | Specific plugins to update. Empty = all |
Response:
{
"site_id": 1,
"site_url": "https://site1.example.com",
"updated": [
{
"slug": "akismet/akismet.php",
"name": "Akismet",
"old_version": "5.3",
"new_version": "5.3.1"
}
],
"errors": [],
"total_updated": 1
}
mainwp/update-site-themes-v1
Update themes on a single site.
Method: POST
# Update specific themes
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"slugs":["twentytwentyfour"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-site-themes-v1/run'
# Update all themes
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-site-themes-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
slugs | array | No | [] | Specific themes to update. Empty = all |
Response:
{
"site_id": 1,
"site_url": "https://site1.example.com",
"updated": [
{
"slug": "twentytwentyfour",
"name": "Twenty Twenty-Four",
"old_version": "1.0",
"new_version": "1.1"
}
],
"errors": [],
"total_updated": 1
}
mainwp/update-site-translations-v1
Update translations on a single site.
Method: POST
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-site-translations-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
Response:
{
"site_id": 1,
"site_url": "https://site1.example.com",
"updated": true,
"translations_updated": 5
}
mainwp/list-ignored-updates-v1
List updates marked as ignored.
Method: GET (readonly)
curl -u 'admin:xxxx' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/list-ignored-updates-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
page | integer | No | 1 | Page number |
per_page | integer | No | 50 | Items per page |
Response:
{
"ignored": [
{
"site_id": 1,
"site_url": "https://site1.example.com",
"site_name": "Site 1",
"type": "plugin",
"slug": "woocommerce/woocommerce.php",
"name": "WooCommerce",
"ignored_version": "8.5.0"
}
],
"total": 5
}
mainwp/set-ignored-updates-v1
Add or remove items from ignored updates list.
Method: POST
# Ignore a plugin update
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"action":"ignore","site_id_or_domain":1,"type":"plugin","slug":"woocommerce/woocommerce.php"}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/set-ignored-updates-v1/run'
# Unignore
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"action":"unignore","site_id_or_domain":1,"type":"plugin","slug":"woocommerce/woocommerce.php"}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/set-ignored-updates-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
action | string | Yes | — | ignore or unignore |
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
type | string | Yes | — | core, plugin, or theme |
slug | string | Yes | — | Item slug (use wordpress for core) |
Response:
{
"success": true,
"action": "ignore",
"site_id": 1,
"type": "plugin",
"slug": "woocommerce/woocommerce.php"
}
mainwp/ignore-site-core-v1
Manage core update ignore status for a site.
Method: POST
# Ignore core updates
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"action":"add"}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/ignore-site-core-v1/run'
# Unignore core updates
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"action":"remove"}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/ignore-site-core-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
action | string | Yes | — | add to ignore, remove to unignore |
Response:
{
"success": true,
"site_id": 1,
"action": "add",
"core_ignored": true
}
mainwp/ignore-site-plugins-v1
Manage plugin ignore status for a site.
Method: POST
# Ignore plugin updates
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"action":"add","slugs":["akismet/akismet.php"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/ignore-site-plugins-v1/run'
# Unignore plugin updates
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"action":"remove","slugs":["akismet/akismet.php"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/ignore-site-plugins-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
action | string | Yes | — | add to ignore, remove to unignore |
slugs | array | Yes | — | Plugin slugs to ignore/unignore |
Response:
{
"success": true,
"site_id": 1,
"action": "add",
"plugins_ignored": ["akismet/akismet.php"]
}
mainwp/ignore-site-themes-v1
Manage theme ignore status for a site.
Method: POST
# Ignore theme updates
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"action":"add","slugs":["twentytwenty"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/ignore-site-themes-v1/run'
# Unignore theme updates
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_id_or_domain":1,"action":"remove","slugs":["twentytwenty"]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/ignore-site-themes-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_id_or_domain | integer|string | Yes | — | Site ID or domain |
action | string | Yes | — | add to ignore, remove to unignore |
slugs | array | Yes | — | Theme slugs to ignore/unignore |
Response:
{
"success": true,
"site_id": 1,
"action": "add",
"themes_ignored": ["twentytwenty"]
}
mainwp/update-all-v1
Execute all available updates across sites. Use with caution on production environments.
Method: POST
# Update everything on all sites
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-all-v1/run'
# Update everything on specific sites
curl -X POST -u 'admin:xxxx' \
-H 'Content-Type: application/json' \
-d '{"input":{"site_ids_or_domains":[1, 2, 3]}}' \
'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/update-all-v1/run'
Input Parameters:
| Name | Type | Required | Default | Description |
|---|
site_ids_or_domains | array | No | [] | Sites to update. Empty = all sites |
Response:
{
"updated": {
"core": 2,
"plugins": 15,
"themes": 3,
"translations": 5
},
"errors": [],
"summary": {
"total_updated": 25,
"total_errors": 0,
"sites_updated": 10
}
}
This ability applies all available updates including WordPress core. Test on staging sites before running against production environments.