Skip to main content
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:
NameTypeRequiredDefaultDescription
site_ids_or_domainsarrayNo[]Filter to specific sites
typesarrayNo[]Filter: core, plugins, themes, translations
pageintegerNo1Page number
per_pageintegerNo50Items 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:
NameTypeRequiredDefaultDescription
site_ids_or_domainsarrayNo[]Sites to update. Empty = all with updates
typesarrayNo[]Update types: core, plugins, themes, translations
specific_itemsarrayNo[]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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite ID or domain
typesarrayNo[]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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite 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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite ID or domain
slugsarrayNo[]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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite ID or domain
slugsarrayNo[]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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite 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:
NameTypeRequiredDefaultDescription
pageintegerNo1Page number
per_pageintegerNo50Items 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:
NameTypeRequiredDefaultDescription
actionstringYesignore or unignore
site_id_or_domaininteger|stringYesSite ID or domain
typestringYescore, plugin, or theme
slugstringYesItem 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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite ID or domain
actionstringYesadd 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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite ID or domain
actionstringYesadd to ignore, remove to unignore
slugsarrayYesPlugin 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:
NameTypeRequiredDefaultDescription
site_id_or_domaininteger|stringYesSite ID or domain
actionstringYesadd to ignore, remove to unignore
slugsarrayYesTheme 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:
NameTypeRequiredDefaultDescription
site_ids_or_domainsarrayNo[]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.