From 9242c5db6cc841fcebd77c64c776ece429706a03 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Sat, 1 Aug 2026 20:52:09 -0400 Subject: [PATCH 1/6] Sprint 1: publish full OpenAPI 3.1 spec for REST API v2 172 paths / 270 operations generated from the live route index, the v2 controllers, and the docs coverage checklist; CustomGPT page now links the full spec as the canonical machine-readable description. --- ...ustomgpt-schema-for-mainwp-rest-api-v2.mdx | 2 +- api-reference/openapi.yaml | 15743 ++++++++++++++++ 2 files changed, 15744 insertions(+), 1 deletion(-) create mode 100644 api-reference/openapi.yaml diff --git a/advanced/api/customgpt-schema-for-mainwp-rest-api-v2.mdx b/advanced/api/customgpt-schema-for-mainwp-rest-api-v2.mdx index c167bca..3e63160 100644 --- a/advanced/api/customgpt-schema-for-mainwp-rest-api-v2.mdx +++ b/advanced/api/customgpt-schema-for-mainwp-rest-api-v2.mdx @@ -29,7 +29,7 @@ Below, you will find Schema necessary to configure a CustomGPT to work with Main Please see our [YouTube video](https://youtu.be/wXZD6MD7RUc) for the entire instructions on creating the CustomGPT. -**NOTE:** CustomGPT limits the number of calls that can be used in a schema to 30. So please switch up the calls in the schema below to suit your needs if necessary. +**NOTE:** CustomGPT limits the number of calls that can be used in a schema to 30, so the schema below is a trimmed subset of REST API v2 covering about 30 operations. Swap calls in and out to suit your needs if necessary. If you need the full API surface for your own software, use the complete [OpenAPI specification](https://raw.githubusercontent.com/mainwp/docs/main/api-reference/openapi.yaml) instead. Copy and paste the following schema into your CustomGPT configuration: diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml new file mode 100644 index 0000000..25bd0c5 --- /dev/null +++ b/api-reference/openapi.yaml @@ -0,0 +1,15743 @@ +info: + contact: + name: MainWP Support + url: https://mainwp.com/support/ + license: + name: GPLv3 or later + url: https://www.gnu.org/licenses/gpl-3.0.html + description: | + REST API v2 for the MainWP Dashboard plugin. All endpoints return JSON and + require an API key sent as a bearer token in the `Authorization` header. + Create keys in your Dashboard under MainWP Dashboard > API Access > API Keys. + + Endpoint paths are relative to the WordPress site running your MainWP + Dashboard, so a full request URL looks like + `https://your-dashboard.example.com/wp-json/mainwp/v2/sites`. + + Endpoint reference with examples: https://docs.mainwp.com/api-reference/rest-api/overview + title: MainWP Dashboard REST API + version: 6.1.3 +openapi: 3.1.0 +servers: + - url: "{dashboardUrl}" + description: The WordPress site where your MainWP Dashboard plugin is installed. + variables: + dashboardUrl: + default: https://your-dashboard.example.com + description: Base URL of the WordPress site running your MainWP Dashboard. +security: + - bearerAuth: [] +tags: + - name: Sites + description: 'Connected child sites: inventory, connection state, plugins, themes, and per-site actions.' + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/sites + - name: Clients + description: Client records and the custom client fields defined on the Dashboard. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/clients + - name: Tags + description: Tags, also called groups, and the sites and clients they cover. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/tags + - name: Updates + description: Available core, plugin, theme, and translation updates, plus running and ignoring them. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/updates + - name: Costs + description: Cost Tracker records and the sites and clients they are assigned to. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/costs + - name: Posts + description: Posts on child sites. Each route reads or writes on the child site while the request runs. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/posts + - name: Pages + description: Pages on child sites. Each route reads or writes on the child site while the request runs. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/pages + - name: Users + description: Users on child sites, including CSV import and administrator password changes. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/users + - name: Monitors + description: 'Uptime monitors: current status, heartbeat history, incidents, and monitor settings.' + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/monitoring + - name: Settings + description: Dashboard settings grouped by settings screen, plus the maintenance tools. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/settings + - name: API Keys + description: REST API keys for the Dashboard, including the legacy v1 keys the list route returns. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/api-keys + - name: Batch + description: The global batch route, which fans a single request out across several controllers. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/batch + - name: Jobs + description: Status of work the Dashboard queued for background processing. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/overview + - name: Comments + description: Comment moderation across child sites. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/extensions + - name: Time Tracker + description: Time tracking tasks, buckets, and per-client settings. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/extensions + - name: SSL Monitor + description: SSL certificate status for child sites served over HTTPS. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/extensions + - name: Domain Monitor + description: Domain registration and expiry data for child sites. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/extensions + - name: Lighthouse + description: Google PageSpeed Insights audits and their stored results. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/extensions + - name: Pro Reports + description: Activity data used to build client reports. + externalDocs: + description: Endpoint reference with examples. + url: https://docs.mainwp.com/api-reference/rest-api/extensions +paths: + /wp-json/mainwp/v2/batch: + post: + operationId: postBatch + summary: Run grouped actions across controllers + description: Runs grouped actions against the sites, clients, updates, costs, and tags controllers in one + request. The response mirrors the request structure. The default limit is 100 items across all groups. + tags: + - Batch + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sites: + type: object + description: Site actions. This group takes the extended action set. + properties: + create: + type: array + description: Sites to connect. Each item takes the same fields as `POST /sites/add`. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + sync: + type: array + description: Site IDs to sync. + items: + type: integer + reconnect: + type: array + description: Site IDs to reconnect. + items: + type: integer + disconnect: + type: array + description: Site IDs to disconnect. + items: + type: integer + suspend: + type: array + description: Site IDs to suspend. + items: + type: integer + check: + type: array + description: Site IDs to run a connection check against. + items: + type: integer + remove: + type: array + description: Site IDs to remove from the Dashboard. + items: + type: integer + security: + type: array + description: Site IDs to return a security snapshot for. + items: + type: integer + plugins: + type: array + description: Site IDs to return the installed plugins for. + items: + type: integer + themes: + type: array + description: Site IDs to return the installed themes for. + items: + type: integer + non-mainwp-changes: + type: array + description: Site IDs to return changes made outside MainWP for. + items: + type: integer + clients: + type: object + properties: + create: + type: array + description: Clients to create. + items: + type: object + updates: + type: object + properties: + create: + type: array + description: Update runs to create. + items: + type: object + costs: + type: object + properties: + create: + type: array + description: Cost records to create. + items: + type: object + tags: + type: object + properties: + create: + type: array + description: Tags to create. + items: + type: object + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putBatch + summary: Run grouped actions across controllers + description: Runs grouped actions against the sites, clients, updates, costs, and tags controllers in one + request. The response mirrors the request structure. The default limit is 100 items across all groups. + tags: + - Batch + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sites: + type: object + description: Site actions. This group takes the extended action set. + properties: + create: + type: array + description: Sites to connect. Each item takes the same fields as `POST /sites/add`. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + sync: + type: array + description: Site IDs to sync. + items: + type: integer + reconnect: + type: array + description: Site IDs to reconnect. + items: + type: integer + disconnect: + type: array + description: Site IDs to disconnect. + items: + type: integer + suspend: + type: array + description: Site IDs to suspend. + items: + type: integer + check: + type: array + description: Site IDs to run a connection check against. + items: + type: integer + remove: + type: array + description: Site IDs to remove from the Dashboard. + items: + type: integer + security: + type: array + description: Site IDs to return a security snapshot for. + items: + type: integer + plugins: + type: array + description: Site IDs to return the installed plugins for. + items: + type: integer + themes: + type: array + description: Site IDs to return the installed themes for. + items: + type: integer + non-mainwp-changes: + type: array + description: Site IDs to return changes made outside MainWP for. + items: + type: integer + clients: + type: object + properties: + create: + type: array + description: Clients to create. + items: + type: object + updates: + type: object + properties: + create: + type: array + description: Update runs to create. + items: + type: object + costs: + type: object + properties: + create: + type: array + description: Cost records to create. + items: + type: object + tags: + type: object + properties: + create: + type: array + description: Tags to create. + items: + type: object + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchBatch + summary: Run grouped actions across controllers + description: Runs grouped actions against the sites, clients, updates, costs, and tags controllers in one + request. The response mirrors the request structure. The default limit is 100 items across all groups. + tags: + - Batch + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sites: + type: object + description: Site actions. This group takes the extended action set. + properties: + create: + type: array + description: Sites to connect. Each item takes the same fields as `POST /sites/add`. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + sync: + type: array + description: Site IDs to sync. + items: + type: integer + reconnect: + type: array + description: Site IDs to reconnect. + items: + type: integer + disconnect: + type: array + description: Site IDs to disconnect. + items: + type: integer + suspend: + type: array + description: Site IDs to suspend. + items: + type: integer + check: + type: array + description: Site IDs to run a connection check against. + items: + type: integer + remove: + type: array + description: Site IDs to remove from the Dashboard. + items: + type: integer + security: + type: array + description: Site IDs to return a security snapshot for. + items: + type: integer + plugins: + type: array + description: Site IDs to return the installed plugins for. + items: + type: integer + themes: + type: array + description: Site IDs to return the installed themes for. + items: + type: integer + non-mainwp-changes: + type: array + description: Site IDs to return changes made outside MainWP for. + items: + type: integer + clients: + type: object + properties: + create: + type: array + description: Clients to create. + items: + type: object + updates: + type: object + properties: + create: + type: array + description: Update runs to create. + items: + type: object + costs: + type: object + properties: + create: + type: array + description: Cost records to create. + items: + type: object + tags: + type: object + properties: + create: + type: array + description: Tags to create. + items: + type: object + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients: + get: + operationId: getClients + summary: List clients + description: Returns the stored client records. + tags: + - Clients + parameters: + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/add: + post: + operationId: postClientsAdd + summary: Create a client + description: Creates a client record and optionally assigns sites to it. + tags: + - Clients + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs to assign to the client. + required: + - name + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/batch: + post: + operationId: postClientsBatch + summary: Batch create, update, and delete clients + description: Creates, updates, and deletes clients in one request. The response is a map of action group to + per-item results, not the standard envelope. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + address_1: + type: string + description: Address 1. + address_2: + type: string + description: Address 2. + city: + type: string + description: City. + client_email: + type: string + description: Email. + client_facebook: + type: string + description: Facebook. + client_id: + type: integer + description: Client ID. + client_instagram: + type: string + description: Instagram. + client_linkedin: + type: string + description: Linkedin. + client_phone: + type: string + description: Phone. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + country: + type: string + description: Country. + created: + type: integer + description: Created. + description: + type: string + description: Field description. + field_id: + type: integer + description: Field ID. + id: + type: integer + description: Client ID. + name: + type: string + description: Client name. + note: + type: string + description: Free-form note stored with the record. + primary_contact_id: + type: integer + description: Primary contact id. + state: + type: string + description: State. + suspended: + type: integer + description: Suspended. + zip: + type: string + description: Postal code. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + address_1: + type: string + description: Address 1. + address_2: + type: string + description: Address 2. + city: + type: string + description: City. + client_email: + type: string + description: Email. + client_facebook: + type: string + description: Facebook. + client_id: + type: integer + description: Client ID. + client_instagram: + type: string + description: Instagram. + client_linkedin: + type: string + description: Linkedin. + client_phone: + type: string + description: Phone. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + country: + type: string + description: Country. + created: + type: integer + description: Created. + description: + type: string + description: Field description. + field_id: + type: integer + description: Field ID. + id: + type: integer + description: Client ID. + name: + type: string + description: Client name. + note: + type: string + description: Free-form note stored with the record. + primary_contact_id: + type: integer + description: Primary contact id. + state: + type: string + description: State. + suspended: + type: integer + description: Suspended. + zip: + type: string + description: Postal code. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putClientsBatch + summary: Batch create, update, and delete clients + description: Creates, updates, and deletes clients in one request. The response is a map of action group to + per-item results, not the standard envelope. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + address_1: + type: string + description: Address 1. + address_2: + type: string + description: Address 2. + city: + type: string + description: City. + client_email: + type: string + description: Email. + client_facebook: + type: string + description: Facebook. + client_id: + type: integer + description: Client ID. + client_instagram: + type: string + description: Instagram. + client_linkedin: + type: string + description: Linkedin. + client_phone: + type: string + description: Phone. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + country: + type: string + description: Country. + created: + type: integer + description: Created. + description: + type: string + description: Field description. + field_id: + type: integer + description: Field ID. + id: + type: integer + description: Client ID. + name: + type: string + description: Client name. + note: + type: string + description: Free-form note stored with the record. + primary_contact_id: + type: integer + description: Primary contact id. + state: + type: string + description: State. + suspended: + type: integer + description: Suspended. + zip: + type: string + description: Postal code. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + address_1: + type: string + description: Address 1. + address_2: + type: string + description: Address 2. + city: + type: string + description: City. + client_email: + type: string + description: Email. + client_facebook: + type: string + description: Facebook. + client_id: + type: integer + description: Client ID. + client_instagram: + type: string + description: Instagram. + client_linkedin: + type: string + description: Linkedin. + client_phone: + type: string + description: Phone. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + country: + type: string + description: Country. + created: + type: integer + description: Created. + description: + type: string + description: Field description. + field_id: + type: integer + description: Field ID. + id: + type: integer + description: Client ID. + name: + type: string + description: Client name. + note: + type: string + description: Free-form note stored with the record. + primary_contact_id: + type: integer + description: Primary contact id. + state: + type: string + description: State. + suspended: + type: integer + description: Suspended. + zip: + type: string + description: Postal code. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchClientsBatch + summary: Batch create, update, and delete clients + description: Creates, updates, and deletes clients in one request. The response is a map of action group to + per-item results, not the standard envelope. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + address_1: + type: string + description: Address 1. + address_2: + type: string + description: Address 2. + city: + type: string + description: City. + client_email: + type: string + description: Email. + client_facebook: + type: string + description: Facebook. + client_id: + type: integer + description: Client ID. + client_instagram: + type: string + description: Instagram. + client_linkedin: + type: string + description: Linkedin. + client_phone: + type: string + description: Phone. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + country: + type: string + description: Country. + created: + type: integer + description: Created. + description: + type: string + description: Field description. + field_id: + type: integer + description: Field ID. + id: + type: integer + description: Client ID. + name: + type: string + description: Client name. + note: + type: string + description: Free-form note stored with the record. + primary_contact_id: + type: integer + description: Primary contact id. + state: + type: string + description: State. + suspended: + type: integer + description: Suspended. + zip: + type: string + description: Postal code. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + address_1: + type: string + description: Address 1. + address_2: + type: string + description: Address 2. + city: + type: string + description: City. + client_email: + type: string + description: Email. + client_facebook: + type: string + description: Facebook. + client_id: + type: integer + description: Client ID. + client_instagram: + type: string + description: Instagram. + client_linkedin: + type: string + description: Linkedin. + client_phone: + type: string + description: Phone. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + country: + type: string + description: Country. + created: + type: integer + description: Created. + description: + type: string + description: Field description. + field_id: + type: integer + description: Field ID. + id: + type: integer + description: Client ID. + name: + type: string + description: Client name. + note: + type: string + description: Free-form note stored with the record. + primary_contact_id: + type: integer + description: Primary contact id. + state: + type: string + description: State. + suspended: + type: integer + description: Suspended. + zip: + type: string + description: Postal code. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/count: + get: + operationId: getClientsCount + summary: Count clients + description: Returns how many clients match the filters. + tags: + - Clients + parameters: + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + responses: + '200': + description: The number of matching records. + content: + application/json: + schema: + $ref: '#/components/schemas/TotalCount' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/fields: + get: + operationId: getClientsFields + summary: List client fields + description: Lists the custom client fields defined on the Dashboard. + tags: + - Clients + parameters: + - name: exclude + in: query + description: Exclude client field IDs. + required: false + schema: + type: string + - name: include + in: query + description: Include client field IDs. + required: false + schema: + type: string + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + - name: pre_page + in: query + description: Number of client fields per page. The name is spelled `pre_page` on this route, not `per_page`. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + - name: search + in: query + description: Search client field name. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/fields/add: + post: + operationId: postClientsFieldsAdd + summary: Create a client field + description: Creates a custom client field. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + description: + type: string + description: Field description. + name: + type: string + description: Field name. + required: + - description + - name + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/fields/{id_name}/delete: + parameters: + - name: id_name + in: path + description: Client field ID or field name. + required: true + schema: + type: string + delete: + operationId: deleteClientsFieldsIdNameDelete + summary: Delete a client field + description: Deletes a custom client field and the values stored against it. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/fields/{id_name}/edit: + parameters: + - name: id_name + in: path + description: Client field ID or field name. + required: true + schema: + type: string + put: + operationId: putClientsFieldsIdNameEdit + summary: Update a client field + description: Renames a custom client field or changes its description. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + description: + type: string + description: Field description. + name: + type: string + description: Field name. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchClientsFieldsIdNameEdit + summary: Update a client field + description: Renames a custom client field or changes its description. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + description: + type: string + description: Field description. + name: + type: string + description: Field name. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getClientsIdEmail + summary: Get one client + description: Returns one client record. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/costs: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getClientsIdEmailCosts + summary: List client costs + description: Returns the Cost Tracker records assigned to a client. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/edit: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + post: + operationId: postClientsIdEmailEdit + summary: Update a client + description: Updates a client record. Send only the fields you want to change. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs assigned to the client. Replaces the current assignment. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putClientsIdEmailEdit + summary: Update a client + description: Updates a client record. Send only the fields you want to change. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs assigned to the client. Replaces the current assignment. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchClientsIdEmailEdit + summary: Update a client + description: Updates a client record. Send only the fields you want to change. + tags: + - Clients + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs assigned to the client. Replaces the current assignment. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/remove: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + delete: + operationId: deleteClientsIdEmailRemove + summary: Delete a client + description: Deletes a client record. Sites assigned to it stay connected and lose the assignment. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/sites: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getClientsIdEmailSites + summary: List client sites + description: Lists the sites assigned to a client. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/sites/count: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getClientsIdEmailSitesCount + summary: Count client sites + description: Returns how many sites are assigned to a client. + tags: + - Clients + responses: + '200': + description: The number of matching records. + content: + application/json: + schema: + $ref: '#/components/schemas/TotalCount' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/suspend: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + post: + operationId: postClientsIdEmailSuspend + summary: Suspend a client + description: Suspends a client and the sites assigned to it. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putClientsIdEmailSuspend + summary: Suspend a client + description: Suspends a client and the sites assigned to it. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchClientsIdEmailSuspend + summary: Suspend a client + description: Suspends a client and the sites assigned to it. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/clients/{id_email}/unsuspend: + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + post: + operationId: postClientsIdEmailUnsuspend + summary: Unsuspend a client + description: Returns a suspended client and its sites to normal operation. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putClientsIdEmailUnsuspend + summary: Unsuspend a client + description: Returns a suspended client and its sites to normal operation. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchClientsIdEmailUnsuspend + summary: Unsuspend a client + description: Returns a suspended client and its sites to normal operation. + tags: + - Clients + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/comments: + x-requires-extension: MainWP Comments + get: + operationId: getComments + summary: List comments across sites + description: Lists comments from the selected sites. Comments are read from each child site while the request + runs. Requires the MainWP Comments extension on the Dashboard. + tags: + - Comments + parameters: + - name: clients + in: query + description: Comma-separated client IDs to filter by. + required: false + schema: + type: string + - name: dtsstart + in: query + description: Start date filter (Y-m-d). + required: false + schema: + type: string + - name: dtsstop + in: query + description: End date filter (Y-m-d). + required: false + schema: + type: string + - name: groups + in: query + description: Comma-separated group names to filter by. + required: false + schema: + type: string + - name: keyword + in: query + description: Keyword to search within comment content. + required: false + schema: + type: string + - name: maximum + in: query + description: Maximum number of comments to return per site (default 50). + required: false + schema: + type: integer + minimum: 1 + maximum: 500 + default: 50 + - name: status + in: query + description: 'Comment status: approved, pending, spam, trash, or all.' + required: false + schema: + type: string + enum: + - approved + - pending + - spam + - trash + - all + default: all + - name: websites + in: query + description: Comma-separated site IDs to filter by. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/comments/{id_domain}: + x-requires-extension: MainWP Comments + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getCommentsIdDomain + summary: List comments on one site + description: Lists comments from one site. Requires the MainWP Comments extension on the Dashboard. + tags: + - Comments + parameters: + - name: clients + in: query + description: Comma-separated client IDs to filter by. + required: false + schema: + type: string + - name: dtsstart + in: query + description: Start date filter (Y-m-d). + required: false + schema: + type: string + - name: dtsstop + in: query + description: End date filter (Y-m-d). + required: false + schema: + type: string + - name: groups + in: query + description: Comma-separated group names to filter by. + required: false + schema: + type: string + - name: keyword + in: query + description: Keyword to search within comment content. + required: false + schema: + type: string + - name: maximum + in: query + description: Maximum number of comments to return per site (default 50). + required: false + schema: + type: integer + minimum: 1 + maximum: 500 + default: 50 + - name: status + in: query + description: 'Comment status: approved, pending, spam, trash, or all.' + required: false + schema: + type: string + enum: + - approved + - pending + - spam + - trash + - all + default: all + - name: websites + in: query + description: Comma-separated site IDs to filter by. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/comments/{id_domain}/bulk-action: + x-requires-extension: MainWP Comments + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + put: + operationId: putCommentsIdDomainBulkAction + summary: Act on several comments + description: Applies one action to several comments on the same site. Requires the MainWP Comments extension + on the Dashboard. + tags: + - Comments + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + action: + type: string + enum: + - approve + - unapprove + - spam + - unspam + - trash + - restore + - delete + description: Action to perform on the comments. + comment_ids: + type: string + description: Comma-separated comment IDs to act on. + required: + - action + - comment_ids + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchCommentsIdDomainBulkAction + summary: Act on several comments + description: Applies one action to several comments on the same site. Requires the MainWP Comments extension + on the Dashboard. + tags: + - Comments + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + action: + type: string + enum: + - approve + - unapprove + - spam + - unspam + - trash + - restore + - delete + description: Action to perform on the comments. + comment_ids: + type: string + description: Comma-separated comment IDs to act on. + required: + - action + - comment_ids + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/comments/{id_domain}/{id_comment}/action: + x-requires-extension: MainWP Comments + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_comment + in: path + description: Comment ID on the child site. + required: true + schema: + type: integer + put: + operationId: putCommentsIdDomainIdCommentAction + summary: Act on one comment + description: Approves, unapproves, marks as spam, trashes, restores, or deletes a single comment. Requires + the MainWP Comments extension on the Dashboard. + tags: + - Comments + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + action: + type: string + enum: + - approve + - unapprove + - spam + - unspam + - trash + - restore + - delete + description: Action to perform on the comment. + required: + - action + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchCommentsIdDomainIdCommentAction + summary: Act on one comment + description: Approves, unapproves, marks as spam, trashes, restores, or deletes a single comment. Requires + the MainWP Comments extension on the Dashboard. + tags: + - Comments + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + action: + type: string + enum: + - approve + - unapprove + - spam + - unspam + - trash + - restore + - delete + description: Action to perform on the comment. + required: + - action + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs: + get: + operationId: getCosts + summary: List costs + description: Lists Cost Tracker records. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + parameters: + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + - name: category + in: query + description: Product category to filter on. + required: false + schema: + type: string + - name: type + in: query + description: Payment type to filter on. + required: false + schema: + type: string + enum: + - any + - subscription + - lifetime + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/add: + post: + operationId: postCostsAdd + summary: Create a cost + description: Creates a Cost Tracker record. Assign it to at least one of `sites`, `groups`, or `clients`, + or the request fails with a 400. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putCostsAdd + summary: Create a cost + description: Creates a Cost Tracker record. Assign it to at least one of `sites`, `groups`, or `clients`, + or the request fails with a 400. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchCostsAdd + summary: Create a cost + description: Creates a Cost Tracker record. Assign it to at least one of `sites`, `groups`, or `clients`, + or the request fails with a 400. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/batch: + post: + operationId: postCostsBatch + summary: Batch create, update, and delete costs + description: Creates, updates, and deletes cost records in one request. The response is a map of action group + to per-item results, not the standard envelope. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putCostsBatch + summary: Batch create, update, and delete costs + description: Creates, updates, and deletes cost records in one request. The response is a map of action group + to per-item results, not the standard envelope. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchCostsBatch + summary: Batch create, update, and delete costs + description: Creates, updates, and deletes cost records in one request. The response is a map of action group + to per-item results, not the standard envelope. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/{id}: + parameters: + - name: id + in: path + description: Cost record ID. + required: true + schema: + type: integer + get: + operationId: getCostsId + summary: Get one cost + description: Returns one Cost Tracker record. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/{id}/clients: + parameters: + - name: id + in: path + description: Cost record ID. + required: true + schema: + type: integer + get: + operationId: getCostsIdClients + summary: List clients linked to a cost + description: Lists the clients a cost record is assigned to. Requires the built-in Cost Tracker module to + be enabled. + tags: + - Costs + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/{id}/edit: + parameters: + - name: id + in: path + description: Cost record ID. + required: true + schema: + type: integer + post: + operationId: postCostsIdEdit + summary: Update a cost + description: Updates a Cost Tracker record. The same fields are required as when creating one. Requires the + built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putCostsIdEdit + summary: Update a cost + description: Updates a Cost Tracker record. The same fields are required as when creating one. Requires the + built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchCostsIdEdit + summary: Update a cost + description: Updates a Cost Tracker record. The same fields are required as when creating one. Requires the + built-in Cost Tracker module to be enabled. + tags: + - Costs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/{id}/remove: + parameters: + - name: id + in: path + description: Cost record ID. + required: true + schema: + type: integer + delete: + operationId: deleteCostsIdRemove + summary: Delete a cost + description: Deletes a Cost Tracker record. Requires the built-in Cost Tracker module to be enabled. + tags: + - Costs + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/costs/{id}/sites: + parameters: + - name: id + in: path + description: Cost record ID. + required: true + schema: + type: integer + get: + operationId: getCostsIdSites + summary: List sites linked to a cost + description: Lists the sites a cost record is assigned to. Requires the built-in Cost Tracker module to be + enabled. + tags: + - Costs + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/jobs/{id}: + parameters: + - name: id + in: path + description: Job ID returned by a queued sync or update response. + required: true + schema: + type: string + get: + operationId: getJobsId + summary: Get job status + description: Returns the state and result of a queued job. Sync and update routes return a `job_id` when the + Dashboard runs the work in the background. + tags: + - Jobs + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors: + get: + operationId: getMonitors + summary: List monitors + description: Lists uptime monitors with their uptime ratios, response times, and last check result. + tags: + - Monitors + parameters: + - name: exclude + in: query + description: Exclude monitor IDs. + required: false + schema: + type: string + - name: include + in: query + description: Include monitor IDs. + required: false + schema: + type: string + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of monitors per page. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 20 + - name: search + in: query + description: Search string. + required: false + schema: + type: string + - name: status + in: query + description: Monitor status. + required: false + schema: + type: string + enum: + - up + - down + - pending + - first + - paused + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/basic: + get: + operationId: getMonitorsBasic + summary: List monitors with basic fields + description: Lists uptime monitors with only their ID, URL, and last status. + tags: + - Monitors + parameters: + - name: exclude + in: query + description: Exclude monitor IDs. + required: false + schema: + type: string + - name: include + in: query + description: Include monitor IDs. + required: false + schema: + type: string + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of monitors per page. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 20 + - name: search + in: query + description: Search string. + required: false + schema: + type: string + - name: status + in: query + description: Monitor status. + required: false + schema: + type: string + enum: + - up + - down + - pending + - first + - paused + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/count: + get: + operationId: getMonitorsCount + summary: Count monitors + description: Returns how many monitors match the filters. + tags: + - Monitors + parameters: + - name: exclude + in: query + description: Exclude monitor IDs. + required: false + schema: + type: string + - name: include + in: query + description: Include monitor IDs. + required: false + schema: + type: string + - name: search + in: query + description: Search string. + required: false + schema: + type: string + - name: status + in: query + description: Monitor status. + required: false + schema: + type: string + enum: + - up + - down + - pending + - first + - paused + responses: + '200': + description: The count. + content: + application/json: + schema: + $ref: '#/components/schemas/CountResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/settings: + put: + operationId: putMonitorsSettings + summary: Update global monitor settings + description: Updates the uptime monitoring defaults that individual monitors fall back to. Send the body as + `application/json`. + tags: + - Monitors + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: boolean + description: Active or disable monitoring globally. + expected_status: + type: array + description: Expected HTTP status codes. + interval: + type: string + description: Default check frequency (e.g., "5m", "1h"). + keyword: + type: string + description: Keyword to match. + maxretries: + type: integer + description: Number of retries on failure. + method: + type: string + enum: + - useglobal + - head + - get + - post + - push + - patch + - delete + description: Monitor method. + timeout: + type: string + description: Request timeout in milliseconds. + type: + type: string + enum: + - useglobal + - http + - ping + - keyword + description: Monitor type. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchMonitorsSettings + summary: Update global monitor settings + description: Updates the uptime monitoring defaults that individual monitors fall back to. Send the body as + `application/json`. + tags: + - Monitors + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: boolean + description: Active or disable monitoring globally. + expected_status: + type: array + description: Expected HTTP status codes. + interval: + type: string + description: Default check frequency (e.g., "5m", "1h"). + keyword: + type: string + description: Keyword to match. + maxretries: + type: integer + description: Number of retries on failure. + method: + type: string + enum: + - useglobal + - head + - get + - post + - push + - patch + - delete + description: Monitor method. + timeout: + type: string + description: Request timeout in milliseconds. + type: + type: string + enum: + - useglobal + - http + - ping + - keyword + description: Monitor type. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getMonitorsIdDomain + summary: Get one monitor + description: Returns one monitor with its heartbeat statistics block. + tags: + - Monitors + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}/basic: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getMonitorsIdDomainBasic + summary: Get basic monitor details + description: Returns the ID, URL, and current status of one monitor. + tags: + - Monitors + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}/check: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postMonitorsIdDomainCheck + summary: Run a monitor check now + description: Checks the monitored URL straight away and returns the status code and resulting up or down state. + tags: + - Monitors + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}/heartbeat: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getMonitorsIdDomainHeartbeat + summary: Get heartbeat history + description: Returns the individual checks recorded for one monitor over the selected period. + tags: + - Monitors + parameters: + - name: limit + in: query + description: Limit number of heartbeats. + required: false + schema: + type: integer + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: period + in: query + description: Window to return checks for. Either `24h`, `7d`, `30d`, or an ISO 8601 range written as `start/end`, + for example `2024-01-01T00:00:00Z/2024-01-02T00:00:00Z`. + required: false + schema: + type: string + default: 30d + - name: since + in: query + description: ISO8601 datetime, only return newer entries. + required: false + schema: + type: string + - name: status + in: query + description: Monitor status. + required: false + schema: + type: string + enum: + - up + - down + - pending + - first + - paused + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}/incidents: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getMonitorsIdDomainIncidents + summary: List monitor incidents + description: Lists the downtime incidents recorded for one monitor. + tags: + - Monitors + parameters: + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of monitors per page. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 20 + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}/incidents/count: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getMonitorsIdDomainIncidentsCount + summary: Count monitor incidents + description: Returns the number of down checks across the incidents on the requested page. + tags: + - Monitors + parameters: + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of monitors per page. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 20 + responses: + '200': + description: The count. + content: + application/json: + schema: + $ref: '#/components/schemas/CountResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/monitors/{id_domain}/settings: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + put: + operationId: putMonitorsIdDomainSettings + summary: Update settings for one monitor + description: Updates the monitoring settings for one site. Set a field to `useglobal` to fall back to the + global defaults. + tags: + - Monitors + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: string + enum: + - '0' + - '1' + - useglobal + description: Active or disable monitoring globally. + expected_status: + type: array + description: Expected HTTP status codes. + interval: + type: string + description: Default check frequency (e.g., "5m", "1h"). + keyword: + type: string + description: Keyword to match. + maxretries: + type: integer + description: Number of retries on failure. + method: + type: string + enum: + - useglobal + - head + - get + - post + - push + - patch + - delete + description: Monitor method. + timeout: + type: string + description: Request timeout in milliseconds. + type: + type: string + enum: + - useglobal + - http + - ping + - keyword + description: Monitor type. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchMonitorsIdDomainSettings + summary: Update settings for one monitor + description: Updates the monitoring settings for one site. Set a field to `useglobal` to fall back to the + global defaults. + tags: + - Monitors + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: string + enum: + - '0' + - '1' + - useglobal + description: Active or disable monitoring globally. + expected_status: + type: array + description: Expected HTTP status codes. + interval: + type: string + description: Default check frequency (e.g., "5m", "1h"). + keyword: + type: string + description: Keyword to match. + maxretries: + type: integer + description: Number of retries on failure. + method: + type: string + enum: + - useglobal + - head + - get + - post + - push + - patch + - delete + description: Monitor method. + timeout: + type: string + description: Request timeout in milliseconds. + type: + type: string + enum: + - useglobal + - http + - ping + - keyword + description: Monitor type. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pages: + get: + operationId: getPages + summary: List pages across sites + description: Lists pages from the selected sites. Pages are read from each child site while the request runs, + so response time grows with the number of sites. + tags: + - Pages + parameters: + - name: clients + in: query + description: Search by clients. + required: false + schema: + type: string + - name: dtsstart + in: query + description: Search by start date. + required: false + schema: + type: string + - name: dtsstop + in: query + description: Search by stop date. + required: false + schema: + type: string + - name: groups + in: query + description: Search by tags. + required: false + schema: + type: string + - name: maximum + in: query + description: Maximum number of pages to return. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 10 + - name: post_type + in: query + description: Search by page type. + required: false + schema: + type: string + - name: search + in: query + description: Search by keyword. + required: false + schema: + type: string + - name: search_on + in: query + description: Search by title or content. + required: false + schema: + type: string + enum: + - title + - body + - Title and Body + - name: status + in: query + description: Search by status. + required: false + schema: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + - name: websites + in: query + description: Websites child site field IDs. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pages/{id_domain}/create: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postPagesIdDomainCreate + summary: Create a page + description: Creates a page on one site and returns its ID and permalink. + tags: + - Pages + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + comment_status: + type: string + enum: + - open + - closed + description: Comment status. + featured_image_data: + type: object + description: Featured image extra data. + is_sticky: + type: integer + enum: + - 0 + - 1 + description: Sticky status. + ping_status: + type: string + enum: + - open + - closed + description: Ping status. + post_content: + type: string + description: Page content. + post_custom: + type: object + description: Custom meta key/values. + post_date: + type: string + description: Page date (YYYY-MM-DD HH:MM:SS). + post_date_gmt: + type: string + description: Page date GMT (YYYY-MM-DD HH:MM:SS). + post_excerpt: + type: string + description: Page excerpt. + post_featured_image: + type: string + description: Featured image URL or data. + post_name: + type: string + description: Page slug. + post_password: + type: string + description: Page password. + post_status: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + description: Page status. + post_title: + type: string + description: Page title. + required: + - post_content + - post_name + - post_status + - post_title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pages/{id_domain}/{id_page}: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_page + in: path + description: Page ID on the child site. + required: true + schema: + type: integer + get: + operationId: getPagesIdDomainIdPage + summary: Get one page + description: Returns one page with its content and metadata, read from the child site. + tags: + - Pages + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pages/{id_domain}/{id_page}/delete: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_page + in: path + description: Page ID on the child site. + required: true + schema: + type: integer + delete: + operationId: deletePagesIdDomainIdPageDelete + summary: Delete a page + description: Deletes one page from the child site. + tags: + - Pages + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pages/{id_domain}/{id_page}/edit: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_page + in: path + description: Page ID on the child site. + required: true + schema: + type: integer + put: + operationId: putPagesIdDomainIdPageEdit + summary: Update a page + description: Updates the content or metadata of one page. + tags: + - Pages + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + comment_status: + type: string + enum: + - open + - closed + description: Comment status. + featured_image_data: + type: object + description: Featured image extra data. + is_sticky: + type: integer + enum: + - 0 + - 1 + description: Sticky status. + ping_status: + type: string + enum: + - open + - closed + description: Ping status. + post_content: + type: string + description: Page content. + post_custom: + type: object + description: Custom meta key/values. + post_date: + type: string + description: Page date (YYYY-MM-DD HH:MM:SS). + post_date_gmt: + type: string + description: Page date GMT (YYYY-MM-DD HH:MM:SS). + post_excerpt: + type: string + description: Page excerpt. + post_featured_image: + type: string + description: Featured image URL or data. + post_name: + type: string + description: Page slug. + post_password: + type: string + description: Page password. + post_status: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + description: Page status. + post_title: + type: string + description: Page title. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchPagesIdDomainIdPageEdit + summary: Update a page + description: Updates the content or metadata of one page. + tags: + - Pages + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + comment_status: + type: string + enum: + - open + - closed + description: Comment status. + featured_image_data: + type: object + description: Featured image extra data. + is_sticky: + type: integer + enum: + - 0 + - 1 + description: Sticky status. + ping_status: + type: string + enum: + - open + - closed + description: Ping status. + post_content: + type: string + description: Page content. + post_custom: + type: object + description: Custom meta key/values. + post_date: + type: string + description: Page date (YYYY-MM-DD HH:MM:SS). + post_date_gmt: + type: string + description: Page date GMT (YYYY-MM-DD HH:MM:SS). + post_excerpt: + type: string + description: Page excerpt. + post_featured_image: + type: string + description: Featured image URL or data. + post_name: + type: string + description: Page slug. + post_password: + type: string + description: Page password. + post_status: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + description: Page status. + post_title: + type: string + description: Page title. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pages/{id_domain}/{id_page}/update-status: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_page + in: path + description: Page ID on the child site. + required: true + schema: + type: integer + put: + operationId: putPagesIdDomainIdPageUpdateStatus + summary: Change page status + description: Changes only the status of one page. + tags: + - Pages + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + status: + type: string + enum: + - unpublish + - publish + - approve + - trash + - delete + - restore + description: New status. + required: + - status + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchPagesIdDomainIdPageUpdateStatus + summary: Change page status + description: Changes only the status of one page. + tags: + - Pages + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + status: + type: string + enum: + - unpublish + - publish + - approve + - trash + - delete + - restore + description: New status. + required: + - status + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/posts: + get: + operationId: getPosts + summary: List posts across sites + description: Lists posts from the selected sites. Posts are read from each child site while the request runs, + so response time grows with the number of sites. + tags: + - Posts + parameters: + - name: clients + in: query + description: Search by clients. + required: false + schema: + type: string + - name: dtsstart + in: query + description: Search by start date. + required: false + schema: + type: string + - name: dtsstop + in: query + description: Search by stop date. + required: false + schema: + type: string + - name: groups + in: query + description: Search by tags. + required: false + schema: + type: string + - name: maximum + in: query + description: Maximum number of posts to return. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 50 + - name: post_type + in: query + description: Search by post type. + required: false + schema: + type: string + - name: search + in: query + description: Search by keyword. + required: false + schema: + type: string + - name: search_on + in: query + description: Search by title or content. + required: false + schema: + type: string + enum: + - title + - body + - Title and Body + - name: status + in: query + description: Search by status. + required: false + schema: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + - name: websites + in: query + description: Websites child site field IDs. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/posts/{id_domain}/create: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postPostsIdDomainCreate + summary: Create a post + description: Creates a post on one site and returns its ID and permalink. + tags: + - Posts + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + comment_status: + type: string + enum: + - open + - closed + description: Comment status. + is_sticky: + type: integer + enum: + - 0 + - 1 + description: Sticky status. + ping_status: + type: string + enum: + - open + - closed + description: Ping status. + post_category: + type: string + description: Post categories (raw string). + post_content: + type: string + description: Post content. + post_custom: + type: object + description: Custom meta key/values. + post_date: + type: string + description: Post date (YYYY-MM-DD HH:MM:SS). + post_date_gmt: + type: string + description: Post date GMT (YYYY-MM-DD HH:MM:SS). + post_excerpt: + type: string + description: Post excerpt. + post_featured_image: + type: string + description: Featured image URL or data. + post_gallery_images: + type: array + description: Gallery images array. + post_name: + type: string + description: Post slug. + post_password: + type: string + description: Post password. + post_status: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + description: Post status. + post_tags: + type: string + description: Post tags (string). + post_title: + type: string + description: Post title. + required: + - post_content + - post_name + - post_status + - post_title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/posts/{id_domain}/{id_post}: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_post + in: path + description: Post ID on the child site. + required: true + schema: + type: integer + get: + operationId: getPostsIdDomainIdPost + summary: Get one post + description: Returns one post with its content and metadata, read from the child site. + tags: + - Posts + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/posts/{id_domain}/{id_post}/delete: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_post + in: path + description: Post ID on the child site. + required: true + schema: + type: integer + delete: + operationId: deletePostsIdDomainIdPostDelete + summary: Delete a post + description: Deletes one post from the child site. + tags: + - Posts + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/posts/{id_domain}/{id_post}/edit: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_post + in: path + description: Post ID on the child site. + required: true + schema: + type: integer + put: + operationId: putPostsIdDomainIdPostEdit + summary: Update a post + description: Updates the content or metadata of one post. + tags: + - Posts + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + comment_status: + type: string + enum: + - open + - closed + description: Comment status. + is_sticky: + type: integer + enum: + - 0 + - 1 + description: Sticky status. + ping_status: + type: string + enum: + - open + - closed + description: Ping status. + post_category: + type: string + description: Post categories (raw string). + post_content: + type: string + description: Post content. + post_custom: + type: object + description: Custom meta key/values. + post_date: + type: string + description: Post date (YYYY-MM-DD HH:MM:SS). + post_date_gmt: + type: string + description: Post date GMT (YYYY-MM-DD HH:MM:SS). + post_excerpt: + type: string + description: Post excerpt. + post_name: + type: string + description: Post slug. + post_password: + type: string + description: Post password. + post_status: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + description: Post status. + post_tags: + type: string + description: Post tags (string). + post_title: + type: string + description: Post title. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchPostsIdDomainIdPostEdit + summary: Update a post + description: Updates the content or metadata of one post. + tags: + - Posts + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + comment_status: + type: string + enum: + - open + - closed + description: Comment status. + is_sticky: + type: integer + enum: + - 0 + - 1 + description: Sticky status. + ping_status: + type: string + enum: + - open + - closed + description: Ping status. + post_category: + type: string + description: Post categories (raw string). + post_content: + type: string + description: Post content. + post_custom: + type: object + description: Custom meta key/values. + post_date: + type: string + description: Post date (YYYY-MM-DD HH:MM:SS). + post_date_gmt: + type: string + description: Post date GMT (YYYY-MM-DD HH:MM:SS). + post_excerpt: + type: string + description: Post excerpt. + post_name: + type: string + description: Post slug. + post_password: + type: string + description: Post password. + post_status: + type: string + enum: + - publish + - pending + - private + - future + - draft + - trash + description: Post status. + post_tags: + type: string + description: Post tags (string). + post_title: + type: string + description: Post title. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/posts/{id_domain}/{id_post}/update-status: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: id_post + in: path + description: Post ID on the child site. + required: true + schema: + type: integer + put: + operationId: putPostsIdDomainIdPostUpdateStatus + summary: Change post status + description: Changes only the status of one post. + tags: + - Posts + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + status: + type: string + enum: + - unpublish + - publish + - approve + - trash + - delete + - restore + description: New status. + required: + - status + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchPostsIdDomainIdPostUpdateStatus + summary: Change post status + description: Changes only the status of one post. + tags: + - Posts + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + status: + type: string + enum: + - unpublish + - publish + - approve + - trash + - delete + - restore + description: New status. + required: + - status + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/rest-api/add-key: + post: + operationId: postRestApiAddKey + summary: Create an API key + description: Creates an API key. The token is returned once in this response and cannot be read again. + tags: + - API Keys + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: boolean + description: Active or disable API key. + description: + type: string + description: API key description. + permissions: + type: string + description: Permission scope, as a comma separated list of `read` and `write`. `write` is the + Write & Delete permission in the Dashboard interface. + required: + - active + - permissions + responses: + '200': + description: The key was created and the token is in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/ApiKeyCreated' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/rest-api/delete-key/{key_identifier}: + parameters: + - name: key_identifier + in: path + description: API key ID, or the `ck_` identifier of a legacy v1 key. + required: true + schema: + type: string + delete: + operationId: deleteRestApiDeleteKeyKeyIdentifier + summary: Delete an API key + description: Deletes an API key. Requests using it stop working right away. + tags: + - API Keys + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/rest-api/edit-key/{key_identifier}: + parameters: + - name: key_identifier + in: path + description: API key ID, or the `ck_` identifier of a legacy v1 key. + required: true + schema: + type: string + put: + operationId: putRestApiEditKeyKeyIdentifier + summary: Update an API key + description: Changes the description, permission scope, or active state of an API key. + tags: + - API Keys + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: boolean + description: Active or disable API key. + description: + type: string + description: API key description. + permissions: + type: string + description: Permission scope, as a comma separated list of `read` and `write`. `write` is the + Write & Delete permission in the Dashboard interface. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchRestApiEditKeyKeyIdentifier + summary: Update an API key + description: Changes the description, permission scope, or active state of an API key. + tags: + - API Keys + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + active: + type: boolean + description: Active or disable API key. + description: + type: string + description: API key description. + permissions: + type: string + description: Permission scope, as a comma separated list of `read` and `write`. `write` is the + Write & Delete permission in the Dashboard interface. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/rest-api/keys: + get: + operationId: getRestApiKeys + summary: List API keys + description: Lists the API keys on the Dashboard. Legacy v1 keys are merged into the same result set. + tags: + - API Keys + parameters: + - name: page + in: query + description: Page number. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of keys per page. + required: false + schema: + type: integer + minimum: 1 + maximum: 200 + default: 20 + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/advanced: + get: + operationId: getSettingsAdvanced + summary: Get Advanced settings + description: Returns the values on the Advanced settings screen. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/advanced/edit: + put: + operationId: putSettingsAdvancedEdit + summary: Update Advanced settings + description: Updates the Advanced settings, including the request throttling limits. Send the body as `application/json`. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + mainwp_chunksitesnumber: + type: integer + minimum: 1 + maximum: 30 + description: Chunk sites number. + mainwp_chunksleepinterval: + type: integer + minimum: 0 + maximum: 20 + description: Chunk sleep interval. + mainwp_connect_signature_algo: + type: integer + description: OpenSSL signature algorithm. + mainwp_force_use_ipv4: + type: boolean + description: Force use IPv4. + mainwp_maximum_install_update_requests: + type: integer + minimum: 1 + maximum: 20 + description: Maximum install and update requests. + mainwp_maximum_ip_requests: + type: integer + minimum: 1 + maximum: 10 + description: Maximum IP requests. + mainwp_maximum_requests: + type: integer + minimum: 1 + maximum: 20 + description: Maximum requests. + mainwp_maximum_sync_requests: + type: integer + minimum: 1 + maximum: 20 + description: Maximum sync requests. + mainwp_maximum_uptime_monitoring_requests: + type: integer + minimum: 1 + maximum: 100 + description: Maximum uptime monitoring requests. + mainwp_minimum_delay: + type: integer + minimum: 100 + maximum: 5000 + multipleOf: 100 + description: Minimum delay. + mainwp_minimum_ip_delay: + type: integer + minimum: 500 + maximum: 5000 + multipleOf: 100 + description: Minimum IP delay. + mainwp_optimize: + type: boolean + description: Optimize data loading. + mainwp_ssl_verify_certificate: + type: boolean + description: Verify SSL certificate. + mainwp_verify_connection_method: + type: integer + enum: + - 1 + - 2 + description: Verify connection method. + mainwp_wp_cron: + type: boolean + description: Use WP Cron. + sync_data: + type: array + description: Sync data. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsAdvancedEdit + summary: Update Advanced settings + description: Updates the Advanced settings, including the request throttling limits. Send the body as `application/json`. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + mainwp_chunksitesnumber: + type: integer + minimum: 1 + maximum: 30 + description: Chunk sites number. + mainwp_chunksleepinterval: + type: integer + minimum: 0 + maximum: 20 + description: Chunk sleep interval. + mainwp_connect_signature_algo: + type: integer + description: OpenSSL signature algorithm. + mainwp_force_use_ipv4: + type: boolean + description: Force use IPv4. + mainwp_maximum_install_update_requests: + type: integer + minimum: 1 + maximum: 20 + description: Maximum install and update requests. + mainwp_maximum_ip_requests: + type: integer + minimum: 1 + maximum: 10 + description: Maximum IP requests. + mainwp_maximum_requests: + type: integer + minimum: 1 + maximum: 20 + description: Maximum requests. + mainwp_maximum_sync_requests: + type: integer + minimum: 1 + maximum: 20 + description: Maximum sync requests. + mainwp_maximum_uptime_monitoring_requests: + type: integer + minimum: 1 + maximum: 100 + description: Maximum uptime monitoring requests. + mainwp_minimum_delay: + type: integer + minimum: 100 + maximum: 5000 + multipleOf: 100 + description: Minimum delay. + mainwp_minimum_ip_delay: + type: integer + minimum: 500 + maximum: 5000 + multipleOf: 100 + description: Minimum IP delay. + mainwp_optimize: + type: boolean + description: Optimize data loading. + mainwp_ssl_verify_certificate: + type: boolean + description: Verify SSL certificate. + mainwp_verify_connection_method: + type: integer + enum: + - 1 + - 2 + description: Verify connection method. + mainwp_wp_cron: + type: boolean + description: Use WP Cron. + sync_data: + type: array + description: Sync data. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/api-backups: + get: + operationId: getSettingsApiBackups + summary: Get API backup provider settings + description: Returns the configuration for each API backup provider. Stored secrets come back masked. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/api-backups/{api_slug}/edit: + parameters: + - name: api_slug + in: path + description: Backup provider slug, as returned by `GET /settings/api-backups`. + required: true + schema: + type: string + put: + operationId: putSettingsApiBackupsApiSlugEdit + summary: Update an API backup provider + description: Updates the connection settings for one API backup provider. Which fields apply depends on the + provider. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + account_email: + type: string + description: Account email (for Cloudways). + company_id: + type: string + description: Company ID (for kinsta). + enabled: + type: boolean + description: Enable/Disable the provider. + password: + type: string + description: API password. + secrets: + type: object + properties: + api_key: + type: string + description: API key (for kinsta). + required: + - api_key + description: Secrets (Cpanel not used). + site_path: + type: string + description: Site path (for cPanel). + url: + type: string + description: Server URL (for cPanel). + username: + type: string + description: API username. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsApiBackupsApiSlugEdit + summary: Update an API backup provider + description: Updates the connection settings for one API backup provider. Which fields apply depends on the + provider. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + account_email: + type: string + description: Account email (for Cloudways). + company_id: + type: string + description: Company ID (for kinsta). + enabled: + type: boolean + description: Enable/Disable the provider. + password: + type: string + description: API password. + secrets: + type: object + properties: + api_key: + type: string + description: API key (for kinsta). + required: + - api_key + description: Secrets (Cpanel not used). + site_path: + type: string + description: Site path (for cPanel). + url: + type: string + description: Server URL (for cPanel). + username: + type: string + description: API username. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker: + get: + operationId: getSettingsCostTracker + summary: Get Cost Tracker settings + description: Returns the currency and number formatting settings, the product categories, and the payment + methods. Requires the built-in Cost Tracker module to be enabled. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/edit: + put: + operationId: putSettingsCostTrackerEdit + summary: Update Cost Tracker settings + description: Updates the currency and number formatting used for cost records. Requires the built-in Cost + Tracker module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + currency: + type: string + description: Currency. + currency_position: + type: string + enum: + - left + - right + - left_space + - right_space + description: Currency position. + decimal_separator: + type: string + description: Decimal separator. + thousand_separator: + type: string + description: Thousand separator. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsCostTrackerEdit + summary: Update Cost Tracker settings + description: Updates the currency and number formatting used for cost records. Requires the built-in Cost + Tracker module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + currency: + type: string + description: Currency. + currency_position: + type: string + enum: + - left + - right + - left_space + - right_space + description: Currency position. + decimal_separator: + type: string + description: Decimal separator. + thousand_separator: + type: string + description: Thousand separator. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/payment-methods/add: + post: + operationId: postSettingsCostTrackerPaymentMethodsAdd + summary: Add a payment method + description: Adds a payment method that cost records can be filed under. Requires the built-in Cost Tracker + module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Payment method title. + required: + - title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/payment-methods/{slug}/delete: + parameters: + - name: slug + in: path + description: Payment method slug. + required: true + schema: + type: string + delete: + operationId: deleteSettingsCostTrackerPaymentMethodsSlugDelete + summary: Delete a payment method + description: Deletes a payment method. Requires the built-in Cost Tracker module to be enabled. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/payment-methods/{slug}/edit: + parameters: + - name: slug + in: path + description: Payment method slug. + required: true + schema: + type: string + put: + operationId: putSettingsCostTrackerPaymentMethodsSlugEdit + summary: Update a payment method + description: Renames a payment method. Requires the built-in Cost Tracker module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Payment method title. + required: + - title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsCostTrackerPaymentMethodsSlugEdit + summary: Update a payment method + description: Renames a payment method. Requires the built-in Cost Tracker module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + title: + type: string + description: Payment method title. + required: + - title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/product-types/add: + post: + operationId: postSettingsCostTrackerProductTypesAdd + summary: Add a product type + description: Adds a product type that cost records can be filed under. Requires the built-in Cost Tracker + module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + color: + type: string + description: Product type color. + icon: + type: string + description: Product type icon. + title: + type: string + description: Product type title. + required: + - title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/product-types/{slug}/delete: + parameters: + - name: slug + in: path + description: Product type slug. + required: true + schema: + type: string + delete: + operationId: deleteSettingsCostTrackerProductTypesSlugDelete + summary: Delete a product type + description: Deletes a product type. The types that ship with the module cannot be deleted. Requires the built-in + Cost Tracker module to be enabled. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/cost-tracker/product-types/{slug}/edit: + parameters: + - name: slug + in: path + description: Product type slug. + required: true + schema: + type: string + put: + operationId: putSettingsCostTrackerProductTypesSlugEdit + summary: Update a product type + description: Updates a product type. The types that ship with the module cannot be renamed. Requires the built-in + Cost Tracker module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + color: + type: string + description: Product type color. + icon: + type: string + description: Product type icon. + title: + type: string + description: Product type title. + required: + - title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsCostTrackerProductTypesSlugEdit + summary: Update a product type + description: Updates a product type. The types that ship with the module cannot be renamed. Requires the built-in + Cost Tracker module to be enabled. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + color: + type: string + description: Product type color. + icon: + type: string + description: Product type icon. + title: + type: string + description: Product type title. + required: + - title + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/dashboard-insights: + get: + operationId: getSettingsDashboardInsights + summary: Get Dashboard Insights settings + description: Returns whether insights logging is turned on. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/dashboard-insights/edit: + put: + operationId: putSettingsDashboardInsightsEdit + summary: Update Dashboard Insights settings + description: Turns insights logging on or off. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + enable_insights_logging: + type: integer + enum: + - 0 + - 1 + description: Enable insights logging. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsDashboardInsightsEdit + summary: Update Dashboard Insights settings + description: Turns insights logging on or off. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + enable_insights_logging: + type: integer + enum: + - 0 + - 1 + description: Enable insights logging. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/emails: + get: + operationId: getSettingsEmails + summary: Get email notification settings + description: Returns every email notification type with its heading, subject, recipients, and enabled state. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/emails/{mail_type}/edit: + parameters: + - name: mail_type + in: path + description: Email notification type slug, as returned by `GET /settings/emails`. + required: true + schema: + type: string + put: + operationId: putSettingsEmailsMailTypeEdit + summary: Update one email notification + description: Updates the heading, subject, recipients, or enabled state of one email notification type. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + disable: + type: boolean + description: Disable mail. + heading: + type: string + description: Mail name. + recipients: + type: string + description: Mail recipients. + subject: + type: string + description: Mail description. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsEmailsMailTypeEdit + summary: Update one email notification + description: Updates the heading, subject, recipients, or enabled state of one email notification type. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + disable: + type: boolean + description: Disable mail. + heading: + type: string + description: Mail name. + recipients: + type: string + description: Mail recipients. + subject: + type: string + description: Mail description. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/general: + get: + operationId: getSettingsGeneral + summary: Get General settings + description: Returns the values on the General settings screen. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/general/edit: + put: + operationId: putSettingsGeneralEdit + summary: Update General settings + description: Updates the General settings. Send the body as `application/json` and include only the fields + you want to change. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + automatic_daily_update: + type: array + description: Plugin automatic daily update. + backup_before_upgrade: + type: boolean + description: Backup before upgrade. + backup_before_upgrade_days: + type: integer + description: Days to check for backup before upgrade. + check_http_response: + type: boolean + description: Check HTTP response after update. + check_http_response_method: + type: string + enum: + - head + - get + description: HTTP method for response check. + date_format: + type: string + description: Date format. + dayinmonth_auto_update: + type: integer + minimum: 0 + maximum: 31 + description: Day in month for auto updates. + dayinweek_auto_update: + type: integer + minimum: 0 + maximum: 6 + description: Day in week for auto updates. + delay_autoupdate: + type: integer + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 14 + - 30 + description: Delay automatic updates. + disable_update_confirmations: + type: integer + enum: + - 0 + - 1 + - 2 + description: Disable update confirmations. + frequency_auto_update: + type: string + enum: + - daily + - weekly + - monthly + description: Frequency of auto updates. + frequency_daily_update: + type: integer + minimum: 1 + maximum: 12 + description: Frequency of daily updates (1-12). + hide_update_everything: + type: boolean + description: Hide update everything button. + mainwp_archive_format: + type: string + enum: + - zip + - tar.gz + - tar.bz2 + - tar + description: Archive format. + mainwp_backup_on_external_sources: + type: string + description: Backup on external sources. + mainwp_backups_on_server: + type: string + description: Backups on server. + mainwp_chunked_backup_tasks: + type: boolean + description: Chunked backup tasks. + mainwp_enable_legacy_backup_feature: + type: boolean + description: Enable legacy backup feature. + mainwp_notification_on_backup_fail: + type: boolean + description: Notification on backup fail. + mainwp_notification_on_backup_start: + type: boolean + description: Notification on backup start. + mainwp_primary_backup: + type: string + enum: + - '' + - module-api-backups + description: Primary backup method. + mainwp_widgets: + type: array + description: MainWP dashboard widgets. + numberdays_outdate_plugin_theme: + type: integer + description: Number of days to consider plugin/theme as outdated. + plugin_automatic_daily_update: + type: boolean + description: Plugin automatic daily update. + show_language_updates: + type: boolean + description: Show language updates. + sidebar_position: + type: boolean + description: Sidebar position. + theme_automatic_daily_update: + type: boolean + description: Theme automatic daily update. + time_auto_update: + type: string + description: Auto update time (whole hour, 24h). + time_daily_update: + type: string + description: Time for daily updates (HH:MM format). + time_format: + type: string + description: Time format. + timezone_string: + type: string + description: Timezone. + trans_automatic_daily_update: + type: array + description: Translation automatic daily update. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsGeneralEdit + summary: Update General settings + description: Updates the General settings. Send the body as `application/json` and include only the fields + you want to change. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + automatic_daily_update: + type: array + description: Plugin automatic daily update. + backup_before_upgrade: + type: boolean + description: Backup before upgrade. + backup_before_upgrade_days: + type: integer + description: Days to check for backup before upgrade. + check_http_response: + type: boolean + description: Check HTTP response after update. + check_http_response_method: + type: string + enum: + - head + - get + description: HTTP method for response check. + date_format: + type: string + description: Date format. + dayinmonth_auto_update: + type: integer + minimum: 0 + maximum: 31 + description: Day in month for auto updates. + dayinweek_auto_update: + type: integer + minimum: 0 + maximum: 6 + description: Day in week for auto updates. + delay_autoupdate: + type: integer + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 14 + - 30 + description: Delay automatic updates. + disable_update_confirmations: + type: integer + enum: + - 0 + - 1 + - 2 + description: Disable update confirmations. + frequency_auto_update: + type: string + enum: + - daily + - weekly + - monthly + description: Frequency of auto updates. + frequency_daily_update: + type: integer + minimum: 1 + maximum: 12 + description: Frequency of daily updates (1-12). + hide_update_everything: + type: boolean + description: Hide update everything button. + mainwp_archive_format: + type: string + enum: + - zip + - tar.gz + - tar.bz2 + - tar + description: Archive format. + mainwp_backup_on_external_sources: + type: string + description: Backup on external sources. + mainwp_backups_on_server: + type: string + description: Backups on server. + mainwp_chunked_backup_tasks: + type: boolean + description: Chunked backup tasks. + mainwp_enable_legacy_backup_feature: + type: boolean + description: Enable legacy backup feature. + mainwp_notification_on_backup_fail: + type: boolean + description: Notification on backup fail. + mainwp_notification_on_backup_start: + type: boolean + description: Notification on backup start. + mainwp_primary_backup: + type: string + enum: + - '' + - module-api-backups + description: Primary backup method. + mainwp_widgets: + type: array + description: MainWP dashboard widgets. + numberdays_outdate_plugin_theme: + type: integer + description: Number of days to consider plugin/theme as outdated. + plugin_automatic_daily_update: + type: boolean + description: Plugin automatic daily update. + show_language_updates: + type: boolean + description: Show language updates. + sidebar_position: + type: boolean + description: Sidebar position. + theme_automatic_daily_update: + type: boolean + description: Theme automatic daily update. + time_auto_update: + type: string + description: Auto update time (whole hour, 24h). + time_daily_update: + type: string + description: Time for daily updates (HH:MM format). + time_format: + type: string + description: Time format. + timezone_string: + type: string + description: Timezone. + trans_automatic_daily_update: + type: array + description: Translation automatic daily update. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/monitoring: + get: + operationId: getSettingsMonitoring + summary: Get monitoring settings + description: Returns the global uptime and site health monitoring settings. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/monitoring/edit: + put: + operationId: putSettingsMonitoringEdit + summary: Update monitoring settings + description: Updates the global uptime and site health monitoring settings. Send the body as `application/json`. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + mainwp_disable_sites_health_monitoring: + type: boolean + description: Disable sites health monitoring. + mainwp_sitehealth_threshold: + type: integer + enum: + - 80 + - 100 + description: Site health threshold. + mainwp_uptime_monitoring_active: + type: boolean + description: Active or disable monitoring globally. + mainwp_uptime_monitoring_down_confirmation_check: + type: integer + enum: + - 0 + - 1 + description: Uptime monitoring down confirmation check. + mainwp_uptime_monitoring_interval: + type: integer + description: Uptime monitoring interval. + mainwp_uptime_monitoring_keyword: + type: string + description: Uptime monitoring keyword. + mainwp_uptime_monitoring_timeout: + type: integer + description: Uptime monitoring timeout. + mainwp_uptime_monitoring_type: + type: string + enum: + - http + - ping + - keyword + description: Uptime monitoring type. + mainwp_uptime_monitoring_up_status_codes: + type: array + description: Uptime monitoring up status codes. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsMonitoringEdit + summary: Update monitoring settings + description: Updates the global uptime and site health monitoring settings. Send the body as `application/json`. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + mainwp_disable_sites_health_monitoring: + type: boolean + description: Disable sites health monitoring. + mainwp_sitehealth_threshold: + type: integer + enum: + - 80 + - 100 + description: Site health threshold. + mainwp_uptime_monitoring_active: + type: boolean + description: Active or disable monitoring globally. + mainwp_uptime_monitoring_down_confirmation_check: + type: integer + enum: + - 0 + - 1 + description: Uptime monitoring down confirmation check. + mainwp_uptime_monitoring_interval: + type: integer + description: Uptime monitoring interval. + mainwp_uptime_monitoring_keyword: + type: string + description: Uptime monitoring keyword. + mainwp_uptime_monitoring_timeout: + type: integer + description: Uptime monitoring timeout. + mainwp_uptime_monitoring_type: + type: string + enum: + - http + - ping + - keyword + description: Uptime monitoring type. + mainwp_uptime_monitoring_up_status_codes: + type: array + description: Uptime monitoring up status codes. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools: + get: + operationId: getSettingsTools + summary: Get Tools settings + description: Returns the interface settings on the Tools screen. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/clear-activation-data: + post: + operationId: postSettingsToolsClearActivationData + summary: Clear extension activation data + description: Clears the stored extension licence activation data. You need to activate your extensions again + afterwards. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/destroy-sessions: + post: + operationId: postSettingsToolsDestroySessions + summary: Start a destroy sessions job + description: Starts a background job that ends every logged in WordPress session on the Dashboard, including + your own. Poll the status route with the returned `destroy_id`. + tags: + - Settings + responses: + '200': + description: The job was started. + content: + application/json: + schema: + $ref: '#/components/schemas/DestroySessionsStarted' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/destroy-sessions-status/{destroy_id}: + parameters: + - name: destroy_id + in: path + description: Job ID returned when the destroy sessions job started. + required: true + schema: + type: string + get: + operationId: getSettingsToolsDestroySessionsStatusDestroyId + summary: Get destroy sessions job status + description: Returns the progress of a destroy sessions job. + tags: + - Settings + responses: + '200': + description: The current job status. + content: + application/json: + schema: + $ref: '#/components/schemas/ToolJobStatus' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/disconnect-all-sites: + post: + operationId: postSettingsToolsDisconnectAllSites + summary: Start a disconnect all sites job + description: Starts a background job that disconnects every site from the Dashboard. Poll the status route + with the returned `disconnect_id`. + tags: + - Settings + responses: + '200': + description: The job was started. + content: + application/json: + schema: + $ref: '#/components/schemas/DisconnectAllSitesStarted' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/disconnect-all-sites-status/{disconnect_id}: + parameters: + - name: disconnect_id + in: path + description: Job ID returned when the disconnect all sites job started. + required: true + schema: + type: string + get: + operationId: getSettingsToolsDisconnectAllSitesStatusDisconnectId + summary: Get disconnect all sites job status + description: Returns the progress of a disconnect all sites job. + tags: + - Settings + responses: + '200': + description: The current job status. + content: + application/json: + schema: + $ref: '#/components/schemas/ToolJobStatus' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/edit: + put: + operationId: putSettingsToolsEdit + summary: Update Tools settings + description: Updates the Dashboard theme and the guided tour, video, and chat options. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + chatbase: + type: boolean + description: Enable chatbase. + guided_tours: + type: boolean + description: Enable guided tours. + guided_video: + type: boolean + description: Enable youtube embeds. + mainwp_theme: + type: string + enum: + - default + - default-2024 + - classic + - dark + - wpadmin + - minimalistic + description: MainWP theme. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSettingsToolsEdit + summary: Update Tools settings + description: Updates the Dashboard theme and the guided tour, video, and chat options. + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + chatbase: + type: boolean + description: Enable chatbase. + guided_tours: + type: boolean + description: Enable guided tours. + guided_video: + type: boolean + description: Enable youtube embeds. + mainwp_theme: + type: string + enum: + - default + - default-2024 + - classic + - dark + - wpadmin + - minimalistic + description: MainWP theme. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/renew-connections: + post: + operationId: postSettingsToolsRenewConnections + summary: Start a renew connections job + description: Starts a background job that renews the connection credentials for every connected site. Poll + the status route with the returned `renew_id`. + tags: + - Settings + responses: + '200': + description: The job was started. + content: + application/json: + schema: + $ref: '#/components/schemas/RenewConnectionsStarted' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/renew-connections-status/{renew_id}: + parameters: + - name: renew_id + in: path + description: Job ID returned when the renew connections job started. + required: true + schema: + type: string + get: + operationId: getSettingsToolsRenewConnectionsStatusRenewId + summary: Get renew connections job status + description: Returns the progress of a renew connections job. + tags: + - Settings + responses: + '200': + description: The current job status. + content: + application/json: + schema: + $ref: '#/components/schemas/ToolJobStatus' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/settings/tools/restore-info-messages: + post: + operationId: postSettingsToolsRestoreInfoMessages + summary: Restore dismissed messages + description: Brings back the information messages that were dismissed in the Dashboard interface. + tags: + - Settings + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites: + get: + operationId: getSites + summary: List sites + description: Returns the stored record for every connected site. Set `full_data` or `with_tags` to `false` + to trim the payload. + tags: + - Sites + parameters: + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + - name: status + in: query + description: Connection status to filter on. + required: false + schema: + type: string + enum: + - any + - connected + - disconnected + - suspended + - available_update + - name: with_tags + in: query + description: Include the tags assigned to each site. + required: false + schema: + type: boolean + default: true + - name: full_data + in: query + description: Include the full stored record instead of the core fields only. + required: false + schema: + type: boolean + default: true + - name: custom_fields + in: query + description: Comma separated list of extra fields to add to each record. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/add: + post: + operationId: postSitesAdd + summary: Add a site + description: Connects a child site to the Dashboard. `url` and `admin` are always required. Send `adminpassword` + when Password Authentication is enabled on the child site, `uniqueid` when Unique Security ID is enabled, + or both when both are enabled. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + ssl_verify: + type: boolean + description: Verify the SSL certificate of the child site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + required: + - admin + - url + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/basic: + get: + operationId: getSitesBasic + summary: List sites with basic fields + description: 'Returns a short record per site: ID, name, URL, and connection status.' + tags: + - Sites + parameters: + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + - name: status + in: query + description: Connection status to filter on. + required: false + schema: + type: string + enum: + - any + - connected + - disconnected + - suspended + - available_update + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/batch: + post: + operationId: postSitesBatch + summary: Batch create, update, and delete sites + description: Creates, updates, and deletes sites in one request. The response is a map of action group to + per-item results, not the standard envelope. The default limit is 100 items across all groups. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesBatch + summary: Batch create, update, and delete sites + description: Creates, updates, and deletes sites in one request. The response is a map of action group to + per-item results, not the standard envelope. The default limit is 100 items across all groups. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesBatch + summary: Batch create, update, and delete sites + description: Creates, updates, and deletes sites in one request. The response is a map of action group to + per-item results, not the standard envelope. The default limit is 100 items across all groups. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + id: + type: integer + description: Site ID. Required on update items. + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/check: + post: + operationId: postSitesCheck + summary: Check all sites + description: Runs an HTTP availability check against every site that matches the filters. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesCheck + summary: Check all sites + description: Runs an HTTP availability check against every site that matches the filters. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesCheck + summary: Check all sites + description: Runs an HTTP availability check against every site that matches the filters. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/count: + get: + operationId: getSitesCount + summary: Count sites + description: Returns how many sites match the filters. The response is a bare `count` object with no `success` + key. + tags: + - Sites + parameters: + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + - name: status + in: query + description: Connection status to filter on. + required: false + schema: + type: string + enum: + - any + - connected + - disconnected + - suspended + - available_update + responses: + '200': + description: The number of matching sites. + content: + application/json: + schema: + $ref: '#/components/schemas/SitesCount' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/disconnect: + post: + operationId: postSitesDisconnect + summary: Disconnect all sites + description: Drops the Dashboard connection for every site that matches the filters. The sites stay listed + and can be reconnected. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesDisconnect + summary: Disconnect all sites + description: Drops the Dashboard connection for every site that matches the filters. The sites stay listed + and can be reconnected. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesDisconnect + summary: Disconnect all sites + description: Drops the Dashboard connection for every site that matches the filters. The sites stay listed + and can be reconnected. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/reconnect: + post: + operationId: postSitesReconnect + summary: Reconnect all sites + description: Re-establishes the connection for every site that matches the filters. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesReconnect + summary: Reconnect all sites + description: Re-establishes the connection for every site that matches the filters. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesReconnect + summary: Reconnect all sites + description: Re-establishes the connection for every site that matches the filters. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Per-site results. + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSiteResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/sync: + post: + operationId: postSitesSync + summary: Sync all sites + description: Starts a sync for every site that matches the filters. When the Dashboard queues the work the + response carries a `job_id` instead of per-site results, and you poll `GET /jobs/{id}` for the outcome. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkSiteResult' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesSync + summary: Sync all sites + description: Starts a sync for every site that matches the filters. When the Dashboard queues the work the + response carries a `job_id` instead of per-site results, and you poll `GET /jobs/{id}` for the outcome. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkSiteResult' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesSync + summary: Sync all sites + description: Starts a sync for every site that matches the filters. When the Dashboard queues the work the + response carries a `job_id` instead of per-site results, and you poll `GET /jobs/{id}` for the outcome. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + include: + type: string + description: Comma separated list of IDs to limit the result set to. + exclude: + type: string + description: Comma separated list of IDs to leave out of the result set. + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/BulkSiteResult' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomain + summary: Get one site + description: Returns the stored record for one site. The response is a bare `data` object with no `success` + key. + tags: + - Sites + responses: + '200': + description: The site record. + content: + application/json: + schema: + $ref: '#/components/schemas/SiteRecord' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/check: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainCheck + summary: Check one site + description: Runs an HTTP availability check against one site and returns the status code it answered with. + tags: + - Sites + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainCheck + summary: Check one site + description: Runs an HTTP availability check against one site and returns the status code it answered with. + tags: + - Sites + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainCheck + summary: Check one site + description: Runs an HTTP availability check against one site and returns the status code it answered with. + tags: + - Sites + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/client: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainClient + summary: Get the client linked to a site + description: Returns the client record a site is assigned to. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/costs: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainCosts + summary: List costs linked to a site + description: Returns the Cost Tracker records a site is assigned to. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/disconnect: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainDisconnect + summary: Disconnect one site + description: Drops the Dashboard connection for one site. The site stays listed and can be reconnected. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainDisconnect + summary: Disconnect one site + description: Drops the Dashboard connection for one site. The site stays listed and can be reconnected. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainDisconnect + summary: Disconnect one site + description: Drops the Dashboard connection for one site. The site stays listed and can be reconnected. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/edit: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainEdit + summary: Update a site + description: Updates the Dashboard-side settings for one site. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name to show for the site in the Dashboard. + adminname: + type: string + description: Administrator username on the child site. + groupids: + type: string + description: Comma separated tag IDs the site belongs to. + client_id: + type: integer + description: Client the site belongs to. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID configured on the child site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + protocol: + type: string + description: Scheme used to reach the site. + sslversion: + type: string + description: SSL version to force for requests to this site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + disablehealthchecking: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to stop running site health checks. + healththreshold: + type: integer + description: Health score below which the site counts as unhealthy. + suspended: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to suspend the site. + automatic_update: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to include the site in automatic updates. + backup_before_upgrade: + type: integer + description: Set to 1 to run a backup before updates. + ignore_core_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending core updates for this site. + ignore_plugin_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending plugin updates for this site. + ignore_theme_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending theme updates for this site. + monitoring_emails: + type: string + description: Comma separated addresses that receive monitoring notices for this site. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainEdit + summary: Update a site + description: Updates the Dashboard-side settings for one site. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name to show for the site in the Dashboard. + adminname: + type: string + description: Administrator username on the child site. + groupids: + type: string + description: Comma separated tag IDs the site belongs to. + client_id: + type: integer + description: Client the site belongs to. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID configured on the child site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + protocol: + type: string + description: Scheme used to reach the site. + sslversion: + type: string + description: SSL version to force for requests to this site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + disablehealthchecking: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to stop running site health checks. + healththreshold: + type: integer + description: Health score below which the site counts as unhealthy. + suspended: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to suspend the site. + automatic_update: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to include the site in automatic updates. + backup_before_upgrade: + type: integer + description: Set to 1 to run a backup before updates. + ignore_core_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending core updates for this site. + ignore_plugin_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending plugin updates for this site. + ignore_theme_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending theme updates for this site. + monitoring_emails: + type: string + description: Comma separated addresses that receive monitoring notices for this site. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainEdit + summary: Update a site + description: Updates the Dashboard-side settings for one site. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name to show for the site in the Dashboard. + adminname: + type: string + description: Administrator username on the child site. + groupids: + type: string + description: Comma separated tag IDs the site belongs to. + client_id: + type: integer + description: Client the site belongs to. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID configured on the child site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + protocol: + type: string + description: Scheme used to reach the site. + sslversion: + type: string + description: SSL version to force for requests to this site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + disablehealthchecking: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to stop running site health checks. + healththreshold: + type: integer + description: Health score below which the site counts as unhealthy. + suspended: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to suspend the site. + automatic_update: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to include the site in automatic updates. + backup_before_upgrade: + type: integer + description: Set to 1 to run a backup before updates. + ignore_core_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending core updates for this site. + ignore_plugin_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending plugin updates for this site. + ignore_theme_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending theme updates for this site. + monitoring_emails: + type: string + description: Comma separated addresses that receive monitoring notices for this site. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/non-mainwp-changes: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainNonMainwpChanges + summary: List changes made outside MainWP + description: Lists plugin, theme, and core changes made on the child site outside the Dashboard. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + - name: source + in: query + description: Limit the list to one change source. + required: false + schema: + type: string + - name: actions + in: query + description: Comma separated actions to include. + required: false + schema: + type: string + - name: contexts + in: query + description: Comma separated contexts to include. + required: false + schema: + type: string + - name: total_count + in: query + description: Number of records to return. + required: false + schema: + type: integer + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/plugins: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainPlugins + summary: List plugins on a site + description: Lists the plugins installed on one site. + tags: + - Sites + parameters: + - name: status + in: query + description: Activation state to filter on. + required: false + schema: + type: string + enum: + - any + - active + - inactive + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + - name: must_use + in: query + description: Set to 1 to return must-use plugins only. + required: false + schema: + type: integer + enum: + - 0 + - 1 + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/plugins/abandoned: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainPluginsAbandoned + summary: List abandoned plugins on a site + description: Lists plugins on the site whose authors have not published an update within the period set in + your Dashboard. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/plugins/activate: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainPluginsActivate + summary: Activate plugins on a site + description: Activates one or more plugins on a site. Pass plugin file paths in `slug`, comma separated for + several. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to act on, comma separated for several. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainPluginsActivate + summary: Activate plugins on a site + description: Activates one or more plugins on a site. Pass plugin file paths in `slug`, comma separated for + several. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to act on, comma separated for several. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainPluginsActivate + summary: Activate plugins on a site + description: Activates one or more plugins on a site. Pass plugin file paths in `slug`, comma separated for + several. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to act on, comma separated for several. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/plugins/deactivate: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainPluginsDeactivate + summary: Deactivate plugins on a site + description: Deactivates one or more plugins on a site. Pass plugin file paths in `slug`, comma separated + for several. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to act on, comma separated for several. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainPluginsDeactivate + summary: Deactivate plugins on a site + description: Deactivates one or more plugins on a site. Pass plugin file paths in `slug`, comma separated + for several. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to act on, comma separated for several. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainPluginsDeactivate + summary: Deactivate plugins on a site + description: Deactivates one or more plugins on a site. Pass plugin file paths in `slug`, comma separated + for several. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to act on, comma separated for several. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/plugins/delete: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + delete: + operationId: deleteSitesIdDomainPluginsDelete + summary: Delete plugins from a site + description: Deletes one or more plugins from a site. Pass plugin file paths in `slug`, comma separated for + several. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + - name: slug + in: query + description: Plugin file paths to delete, comma separated for several. + required: true + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/reconnect: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainReconnect + summary: Reconnect one site + description: Re-establishes the connection for one site. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainReconnect + summary: Reconnect one site + description: Re-establishes the connection for one site. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainReconnect + summary: Reconnect one site + description: Re-establishes the connection for one site. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/remove: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + delete: + operationId: deleteSitesIdDomainRemove + summary: Remove a site from the Dashboard + description: Removes a site from the Dashboard. The child site and its content are left in place. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/security: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainSecurity + summary: Get the security snapshot for a site + description: Returns the security check results the child site reported at its last sync. + tags: + - Sites + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/suspend: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainSuspend + summary: Suspend one site + description: Suspends one site. Suspended sites are skipped by syncs and update runs. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainSuspend + summary: Suspend one site + description: Suspends one site. Suspended sites are skipped by syncs and update runs. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainSuspend + summary: Suspend one site + description: Suspends one site. Suspended sites are skipped by syncs and update runs. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/sync: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainSync + summary: Sync one site + description: Syncs one site. The response carries a `job_id` when the Dashboard queues the work, and you poll + `GET /jobs/{id}` for the outcome. + tags: + - Sites + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Success' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainSync + summary: Sync one site + description: Syncs one site. The response carries a `job_id` when the Dashboard queues the work, and you poll + `GET /jobs/{id}` for the outcome. + tags: + - Sites + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Success' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainSync + summary: Sync one site + description: Syncs one site. The response carries a `job_id` when the Dashboard queues the work, and you poll + `GET /jobs/{id}` for the outcome. + tags: + - Sites + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Success' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/themes: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainThemes + summary: List themes on a site + description: Lists the themes installed on one site. + tags: + - Sites + parameters: + - name: status + in: query + description: Activation state to filter on. + required: false + schema: + type: string + enum: + - any + - active + - inactive + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/themes/abandoned: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSitesIdDomainThemesAbandoned + summary: List abandoned themes on a site + description: Lists themes on the site whose authors have not published an update within the period set in + your Dashboard. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/themes/activate: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainThemesActivate + summary: Activate a theme on a site + description: Activates a theme on a site. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slug to activate. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainThemesActivate + summary: Activate a theme on a site + description: Activates a theme on a site. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slug to activate. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainThemesActivate + summary: Activate a theme on a site + description: Activates a theme on a site. + tags: + - Sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slug to activate. + required: + - slug + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/themes/delete: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + delete: + operationId: deleteSitesIdDomainThemesDelete + summary: Delete themes from a site + description: Deletes one or more themes from a site. + tags: + - Sites + parameters: + - name: slug + in: query + description: Theme slugs to delete, comma separated for several. + required: true + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/sites/{id_domain}/unsuspend: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSitesIdDomainUnsuspend + summary: Unsuspend one site + description: Returns a suspended site to normal operation. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putSitesIdDomainUnsuspend + summary: Unsuspend one site + description: Returns a suspended site to normal operation. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchSitesIdDomainUnsuspend + summary: Unsuspend one site + description: Returns a suspended site to normal operation. + tags: + - Sites + parameters: + - name: context + in: query + description: Scope of the request. Determines which fields the response carries. + required: false + schema: + type: string + default: view + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags: + get: + operationId: getTags + summary: List tags + description: Lists tags with the sites assigned to each one. + tags: + - Tags + parameters: + - name: page + in: query + description: Page of the result set to return. + required: false + schema: + type: integer + minimum: 1 + default: 1 + - name: per_page + in: query + description: Number of records per page. + required: false + schema: + type: integer + minimum: 1 + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/add: + post: + operationId: postTagsAdd + summary: Create a tag + description: Creates a tag. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. + required: + - name + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/batch: + post: + operationId: postTagsBatch + summary: Batch create, update, and delete tags + description: Creates, updates, and deletes tags in one request. The response is a map of action group to per-item + results, not the standard envelope. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + color: + type: string + description: Tag color. + count_sites: + type: integer + description: Tag Sites. + id: + type: integer + description: Tag ID. + name: + type: string + description: Tag name. + sites_ids: + type: array + items: + type: integer + description: Site IDs assigned to the tag. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + color: + type: string + description: Tag color. + count_sites: + type: integer + description: Tag Sites. + id: + type: integer + description: Tag ID. + name: + type: string + description: Tag name. + sites_ids: + type: array + items: + type: integer + description: Site IDs assigned to the tag. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putTagsBatch + summary: Batch create, update, and delete tags + description: Creates, updates, and deletes tags in one request. The response is a map of action group to per-item + results, not the standard envelope. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + color: + type: string + description: Tag color. + count_sites: + type: integer + description: Tag Sites. + id: + type: integer + description: Tag ID. + name: + type: string + description: Tag name. + sites_ids: + type: array + items: + type: integer + description: Site IDs assigned to the tag. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + color: + type: string + description: Tag color. + count_sites: + type: integer + description: Tag Sites. + id: + type: integer + description: Tag ID. + name: + type: string + description: Tag name. + sites_ids: + type: array + items: + type: integer + description: Site IDs assigned to the tag. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchTagsBatch + summary: Batch create, update, and delete tags + description: Creates, updates, and deletes tags in one request. The response is a map of action group to per-item + results, not the standard envelope. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + create: + type: array + description: Records to create. + items: + type: object + properties: + color: + type: string + description: Tag color. + count_sites: + type: integer + description: Tag Sites. + id: + type: integer + description: Tag ID. + name: + type: string + description: Tag name. + sites_ids: + type: array + items: + type: integer + description: Site IDs assigned to the tag. + update: + type: array + description: Records to update. Each item needs the record ID. + items: + type: object + properties: + color: + type: string + description: Tag color. + count_sites: + type: integer + description: Tag Sites. + id: + type: integer + description: Tag ID. + name: + type: string + description: Tag name. + sites_ids: + type: array + items: + type: integer + description: Site IDs assigned to the tag. + delete: + type: array + description: IDs of records to delete. + items: + type: integer + responses: + '200': + description: Per-item results, grouped the same way as the request. + content: + application/json: + schema: + $ref: '#/components/schemas/BatchResult' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/{id}: + parameters: + - name: id + in: path + description: Tag ID. + required: true + schema: + type: integer + get: + operationId: getTagsId + summary: Get one tag + description: Returns one tag with the sites assigned to it. + tags: + - Tags + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/{id}/clients: + parameters: + - name: id + in: path + description: Tag ID. + required: true + schema: + type: integer + get: + operationId: getTagsIdClients + summary: List clients in a tag + description: Lists the clients that own the sites assigned to a tag. + tags: + - Tags + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/{id}/edit: + parameters: + - name: id + in: path + description: Tag ID. + required: true + schema: + type: integer + post: + operationId: postTagsIdEdit + summary: Update a tag + description: Renames a tag or changes its colour. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putTagsIdEdit + summary: Update a tag + description: Renames a tag or changes its colour. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchTagsIdEdit + summary: Update a tag + description: Renames a tag or changes its colour. + tags: + - Tags + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/{id}/remove: + parameters: + - name: id + in: path + description: Tag ID. + required: true + schema: + type: integer + delete: + operationId: deleteTagsIdRemove + summary: Delete a tag + description: Deletes a tag. The sites that carried it stay connected. + tags: + - Tags + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/tags/{id}/sites: + parameters: + - name: id + in: path + description: Tag ID. + required: true + schema: + type: integer + get: + operationId: getTagsIdSites + summary: List sites in a tag + description: Lists the sites assigned to a tag. + tags: + - Tags + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker: + x-requires-extension: MainWP Time Tracker + get: + operationId: getTimeTracker + summary: List time tracker tasks + description: Lists the tracked tasks across clients and sites. Requires the MainWP Time Tracker extension + on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/buckets: + x-requires-extension: MainWP Time Tracker + get: + operationId: getTimeTrackerBuckets + summary: List buckets + description: Lists the time buckets across clients. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/buckets/{id}: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id + in: path + description: Bucket ID. + required: true + schema: + type: integer + get: + operationId: getTimeTrackerBucketsId + summary: Get one bucket + description: Returns one time bucket with its balance. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/clients: + x-requires-extension: MainWP Time Tracker + get: + operationId: getTimeTrackerClients + summary: List Time Tracker clients + description: Lists the clients that Time Tracker holds data for. Requires the MainWP Time Tracker extension + on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/clients/{id_email}: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getTimeTrackerClientsIdEmail + summary: Get one Time Tracker client + description: Returns the Time Tracker record for one client. Requires the MainWP Time Tracker extension on + the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/clients/{id_email}/buckets: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getTimeTrackerClientsIdEmailBuckets + summary: List buckets for one client + description: Lists the time buckets that belong to one client. Requires the MainWP Time Tracker extension + on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/clients/{id_email}/settings: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getTimeTrackerClientsIdEmailSettings + summary: Get Time Tracker settings for one client + description: Returns the Time Tracker settings that apply to one client. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/clients/{id_email}/tasks: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id_email + in: path + description: Client ID or email. + required: true + schema: + type: string + get: + operationId: getTimeTrackerClientsIdEmailTasks + summary: List tasks for one client + description: Lists the tracked tasks that belong to one client. Requires the MainWP Time Tracker extension + on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/settings: + x-requires-extension: MainWP Time Tracker + get: + operationId: getTimeTrackerSettings + summary: Get Time Tracker settings + description: Returns the Time Tracker settings that apply to every client. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/sites/{id_domain}/tasks: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getTimeTrackerSitesIdDomainTasks + summary: List tasks for one site + description: Lists the tracked tasks that belong to one site. Requires the MainWP Time Tracker extension on + the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/tasks/add: + x-requires-extension: MainWP Time Tracker + post: + operationId: postTimeTrackerTasksAdd + summary: Create a task + description: Creates a time tracker task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + requestBody: + required: true + content: + application/json: + schema: + type: object + description: Task fields. The Time Tracker extension defines which fields are accepted. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/tasks/{id}: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id + in: path + description: Task ID. + required: true + schema: + type: integer + get: + operationId: getTimeTrackerTasksId + summary: Get one task + description: Returns one task with its recorded time. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/tasks/{id}/edit: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id + in: path + description: Task ID. + required: true + schema: + type: integer + post: + operationId: postTimeTrackerTasksIdEdit + summary: Update a task + description: Updates a time tracker task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + requestBody: + required: true + content: + application/json: + schema: + type: object + description: Task fields to change. The Time Tracker extension defines which fields are accepted. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putTimeTrackerTasksIdEdit + summary: Update a task + description: Updates a time tracker task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + requestBody: + required: true + content: + application/json: + schema: + type: object + description: Task fields to change. The Time Tracker extension defines which fields are accepted. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchTimeTrackerTasksIdEdit + summary: Update a task + description: Updates a time tracker task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + requestBody: + required: true + content: + application/json: + schema: + type: object + description: Task fields to change. The Time Tracker extension defines which fields are accepted. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/tasks/{id}/pause: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id + in: path + description: Task ID. + required: true + schema: + type: integer + post: + operationId: postTimeTrackerTasksIdPause + summary: Pause a task timer + description: Pauses the timer on a task and keeps the time recorded so far. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putTimeTrackerTasksIdPause + summary: Pause a task timer + description: Pauses the timer on a task and keeps the time recorded so far. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchTimeTrackerTasksIdPause + summary: Pause a task timer + description: Pauses the timer on a task and keeps the time recorded so far. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/tasks/{id}/start: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id + in: path + description: Task ID. + required: true + schema: + type: integer + post: + operationId: postTimeTrackerTasksIdStart + summary: Start a task timer + description: Starts the timer on a task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putTimeTrackerTasksIdStart + summary: Start a task timer + description: Starts the timer on a task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchTimeTrackerTasksIdStart + summary: Start a task timer + description: Starts the timer on a task. Requires the MainWP Time Tracker extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/time-tracker/tasks/{id}/stop: + x-requires-extension: MainWP Time Tracker + parameters: + - name: id + in: path + description: Task ID. + required: true + schema: + type: integer + post: + operationId: postTimeTrackerTasksIdStop + summary: Stop a task timer + description: Stops the timer on a task and closes the current time entry. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putTimeTrackerTasksIdStop + summary: Stop a task timer + description: Stops the timer on a task and closes the current time entry. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchTimeTrackerTasksIdStop + summary: Stop a task timer + description: Stops the timer on a task and closes the current time entry. Requires the MainWP Time Tracker + extension on the Dashboard. + tags: + - Time Tracker + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates: + get: + operationId: getUpdates + summary: List available updates + description: Lists the pending core, plugin, theme, and translation updates for every site, keyed by site + ID. + tags: + - Updates + parameters: + - name: type + in: query + description: Update types to return, comma separated. Accepts `all`, `wp`, `plugins`, `themes`, and `translations`. + required: false + schema: + type: string + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + - name: include + in: query + description: Comma separated list of IDs to limit the result set to. + required: false + schema: + type: string + - name: exclude + in: query + description: Comma separated list of IDs to leave out of the result set. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/ignored: + get: + operationId: getUpdatesIgnored + summary: List ignored updates + description: Lists the plugin and theme updates ignored across the whole Dashboard. + tags: + - Updates + parameters: + - name: type + in: query + description: Update types to return, comma separated. Accepts `all`, `plugins`, and `themes`. + required: false + schema: + type: string + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/update: + post: + operationId: postUpdatesUpdate + summary: Run updates on all sites + description: Starts the pending updates across every site. The response carries a `job_id` and `queued_count` + when the Dashboard queues the work, and you poll `GET /jobs/{id}` for the outcome. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + type: + type: string + description: Update types to run, comma separated. Accepts `all`, `wp`, `plugins`, `themes`, and + `translations`. + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UpdateRunStarted' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesUpdate + summary: Run updates on all sites + description: Starts the pending updates across every site. The response carries a `job_id` and `queued_count` + when the Dashboard queues the work, and you poll `GET /jobs/{id}` for the outcome. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + type: + type: string + description: Update types to run, comma separated. Accepts `all`, `wp`, `plugins`, `themes`, and + `translations`. + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UpdateRunStarted' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesUpdate + summary: Run updates on all sites + description: Starts the pending updates across every site. The response carries a `job_id` and `queued_count` + when the Dashboard queues the work, and you poll `GET /jobs/{id}` for the outcome. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + type: + type: string + description: Update types to run, comma separated. Accepts `all`, `wp`, `plugins`, `themes`, and + `translations`. + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UpdateRunStarted' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getUpdatesIdDomain + summary: List available updates for one site + description: Lists the pending updates for one site. + tags: + - Updates + parameters: + - name: type + in: query + description: Update types to return, comma separated. Accepts `all`, `wp`, `plugins`, `themes`, and `translations`. + required: false + schema: + type: string + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/ignore/plugins: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainIgnorePlugins + summary: Ignore plugin updates on one site + description: Hides plugin updates for one site. Send `slug` to ignore named plugins, or leave it out to ignore + every plugin update on the site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to ignore, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainIgnorePlugins + summary: Ignore plugin updates on one site + description: Hides plugin updates for one site. Send `slug` to ignore named plugins, or leave it out to ignore + every plugin update on the site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to ignore, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainIgnorePlugins + summary: Ignore plugin updates on one site + description: Hides plugin updates for one site. Send `slug` to ignore named plugins, or leave it out to ignore + every plugin update on the site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to ignore, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/ignore/themes: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainIgnoreThemes + summary: Ignore theme updates on one site + description: Hides theme updates for one site. Send `slug` to ignore named themes, or leave it out to ignore + every theme update on the site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slugs to ignore, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainIgnoreThemes + summary: Ignore theme updates on one site + description: Hides theme updates for one site. Send `slug` to ignore named themes, or leave it out to ignore + every theme update on the site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slugs to ignore, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainIgnoreThemes + summary: Ignore theme updates on one site + description: Hides theme updates for one site. Send `slug` to ignore named themes, or leave it out to ignore + every theme update on the site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slugs to ignore, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/ignore/wp: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainIgnoreWp + summary: Ignore the core update on one site + description: Hides the pending WordPress core update for one site until a newer version ships. + tags: + - Updates + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainIgnoreWp + summary: Ignore the core update on one site + description: Hides the pending WordPress core update for one site until a newer version ships. + tags: + - Updates + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainIgnoreWp + summary: Ignore the core update on one site + description: Hides the pending WordPress core update for one site until a newer version ships. + tags: + - Updates + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/ignored: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getUpdatesIdDomainIgnored + summary: List ignored updates for one site + description: Lists the updates ignored for one site, including the entries ignored Dashboard-wide. + tags: + - Updates + parameters: + - name: type + in: query + description: Update types to return, comma separated. Accepts `all`, `plugins`, and `themes`. + required: false + schema: + type: string + - name: search + in: query + description: Return only records matching this string. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/update: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainUpdate + summary: Run updates on one site + description: Starts the pending updates on one site. Suspended sites are rejected with a 400. The response + carries a `job_id` when the Dashboard queues the work. + tags: + - Updates + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UpdateRunStarted' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainUpdate + summary: Run updates on one site + description: Starts the pending updates on one site. Suspended sites are rejected with a 400. The response + carries a `job_id` when the Dashboard queues the work. + tags: + - Updates + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UpdateRunStarted' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainUpdate + summary: Run updates on one site + description: Starts the pending updates on one site. Suspended sites are rejected with a 400. The response + carries a `job_id` when the Dashboard queues the work. + tags: + - Updates + responses: + '200': + description: Success. The shape depends on whether the Dashboard ran the work inline or queued it. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UpdateRunStarted' + - $ref: '#/components/schemas/QueuedAction' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/update/plugins: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainUpdatePlugins + summary: Update plugins on one site + description: Updates plugins on one site. Send `slug` to pick specific plugins, or leave it out to update + every plugin with an update pending. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainUpdatePlugins + summary: Update plugins on one site + description: Updates plugins on one site. Send `slug` to pick specific plugins, or leave it out to update + every plugin with an update pending. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainUpdatePlugins + summary: Update plugins on one site + description: Updates plugins on one site. Send `slug` to pick specific plugins, or leave it out to update + every plugin with an update pending. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Plugin file paths to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/update/themes: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainUpdateThemes + summary: Update themes on one site + description: Updates themes on one site. Send `slug` to pick specific themes, or leave it out to update every + theme with an update pending. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slugs to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainUpdateThemes + summary: Update themes on one site + description: Updates themes on one site. Send `slug` to pick specific themes, or leave it out to update every + theme with an update pending. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slugs to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainUpdateThemes + summary: Update themes on one site + description: Updates themes on one site. Send `slug` to pick specific themes, or leave it out to update every + theme with an update pending. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Theme slugs to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/update/translations: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainUpdateTranslations + summary: Update translations on one site + description: Updates translation files on one site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Translation slugs to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainUpdateTranslations + summary: Update translations on one site + description: Updates translation files on one site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Translation slugs to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainUpdateTranslations + summary: Update translations on one site + description: Updates translation files on one site. + tags: + - Updates + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + slug: + type: string + description: Translation slugs to update, comma separated for several. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/updates/{id_domain}/update/wp: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postUpdatesIdDomainUpdateWp + summary: Update WordPress core on one site + description: Runs the pending WordPress core update on one site. + tags: + - Updates + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + put: + operationId: putUpdatesIdDomainUpdateWp + summary: Update WordPress core on one site + description: Runs the pending WordPress core update on one site. + tags: + - Updates + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUpdatesIdDomainUpdateWp + summary: Update WordPress core on one site + description: Runs the pending WordPress core update on one site. + tags: + - Updates + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/users: + get: + operationId: getUsers + summary: List users across sites + description: Lists users from the selected sites. Users are read from each child site while the request runs. + tags: + - Users + parameters: + - name: clients + in: query + description: Search by clients. + required: false + schema: + type: string + - name: groups + in: query + description: Search by tags. + required: false + schema: + type: string + - name: roles + in: query + description: Search by roles. + required: false + schema: + type: array + items: + type: string + enum: + - administrator + - subscriber + - editor + - author + - contributor + - name: search + in: query + description: Search by user name. + required: false + schema: + type: string + - name: websites + in: query + description: Websites child site field IDs. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/users/create: + post: + operationId: postUsersCreate + summary: Create a user on selected sites + description: Creates the same user account on every selected site and reports which sites succeeded. + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + clients: + type: string + description: Search by clients. + email: + type: string + description: Email. + first_name: + type: string + description: First name. + groups: + type: string + description: Search by tags. + last_name: + type: string + description: Last name. + password: + type: string + description: Password. + role: + type: string + enum: + - administrator + - subscriber + - editor + - author + - contributor + description: Role to assign on each target site. + send_password: + type: boolean + description: Send password. + user_url: + type: string + description: User website. + username: + type: string + description: Username. + websites: + type: string + description: Websites child site field IDs. + required: + - email + - username + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/users/import: + post: + operationId: postUsersImport + summary: Import users from a CSV file + description: Creates users from an uploaded CSV file. Send the request as `multipart/form-data`. The response + is an import report and has no `success` key. + tags: + - Users + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + csv_file: + type: string + format: binary + description: CSV file holding one user per row. + has_header: + type: boolean + default: true + description: Skip the first row of the file as a header row. + required: + - csv_file + responses: + '200': + description: The import report. + content: + application/json: + schema: + $ref: '#/components/schemas/UserImportReport' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/users/update-admin-password: + put: + operationId: putUsersUpdateAdminPassword + summary: Update administrator passwords + description: Sets a new password for the administrator account MainWP uses on each selected site. + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + clients: + type: string + description: Search by clients. + groups: + type: string + description: Search by tags. + password: + type: string + description: Password. + websites: + type: string + description: Websites child site field IDs. + required: + - password + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUsersUpdateAdminPassword + summary: Update administrator passwords + description: Sets a new password for the administrator account MainWP uses on each selected site. + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + clients: + type: string + description: Search by clients. + groups: + type: string + description: Search by tags. + password: + type: string + description: Password. + websites: + type: string + description: Websites child site field IDs. + required: + - password + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/users/{id_domain}/{user_id}/delete: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: user_id + in: path + description: User ID on the child site. + required: true + schema: + type: integer + delete: + operationId: deleteUsersIdDomainUserIdDelete + summary: Delete a user from one site + description: Deletes one user from one site. Content owned by the user is handled by WordPress on the child + site. + tags: + - Users + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/users/{id_domain}/{user_id}/edit: + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: user_id + in: path + description: User ID on the child site. + required: true + schema: + type: integer + put: + operationId: putUsersIdDomainUserIdEdit + summary: Update a user on one site + description: Updates the profile fields of one user on one site. + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + description: + type: string + description: Description. + display_name: + type: string + description: Display name. + email: + type: string + description: Email. + first_name: + type: string + description: First name. + last_name: + type: string + description: Last name. + nickname: + type: string + description: Nickname. + password: + type: string + description: Password. + role: + type: string + enum: + - administrator + - subscriber + - editor + - author + - contributor + description: Role to assign on each target site. + user_url: + type: string + description: User website. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + patch: + operationId: patchUsersIdDomainUserIdEdit + summary: Update a user on one site + description: Updates the profile fields of one user on one site. + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + description: + type: string + description: Description. + display_name: + type: string + description: Display name. + email: + type: string + description: Email. + first_name: + type: string + description: First name. + last_name: + type: string + description: Last name. + nickname: + type: string + description: Nickname. + password: + type: string + description: Password. + role: + type: string + enum: + - administrator + - subscriber + - editor + - author + - contributor + description: Role to assign on each target site. + user_url: + type: string + description: User website. + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/domain-monitor/profiles: + x-requires-extension: MainWP Domain Monitor + get: + operationId: getDomainMonitorProfiles + summary: List domain profiles for all sites + description: Returns the registration and expiry data the extension recorded for every monitored domain. Requires + the MainWP Domain Monitor extension on the Dashboard. + tags: + - Domain Monitor + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/domain-monitor/profiles/{id_domain}: + x-requires-extension: MainWP Domain Monitor + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getDomainMonitorProfilesIdDomain + summary: Get the domain profile for one site + description: Returns the registration and expiry data the extension recorded for one domain. Requires the + MainWP Domain Monitor extension on the Dashboard. + tags: + - Domain Monitor + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/domain-monitor/{id_domain}: + x-requires-extension: MainWP Domain Monitor + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postDomainMonitorIdDomain + summary: Run a domain check for one site + description: Looks up the domain registration for one site now and stores the result. Requires the MainWP + Domain Monitor extension on the Dashboard. + tags: + - Domain Monitor + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/lighthouse/audit: + x-requires-extension: Lighthouse + post: + operationId: postLighthouseAudit + summary: Run Lighthouse audits for all sites + description: Starts a Lighthouse audit for every site the extension supports. Requires the Lighthouse extension + on the Dashboard. + tags: + - Lighthouse + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/lighthouse/audit/{id_domain}: + x-requires-extension: Lighthouse + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postLighthouseAuditIdDomain + summary: Run a Lighthouse audit for one site + description: Starts a Lighthouse audit for one site. Requires the Lighthouse extension on the Dashboard. + tags: + - Lighthouse + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/lighthouse/results: + x-requires-extension: Lighthouse + get: + operationId: getLighthouseResults + summary: List Lighthouse results for all sites + description: Returns the stored performance, accessibility, best practice, and SEO scores for every audited + site. Requires the Lighthouse extension on the Dashboard. + tags: + - Lighthouse + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/lighthouse/results/{id_domain}: + x-requires-extension: Lighthouse + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getLighthouseResultsIdDomain + summary: Get Lighthouse results for one site + description: Returns the stored Lighthouse scores for one site. Requires the Lighthouse extension on the Dashboard. + tags: + - Lighthouse + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/pro-reports/{id_domain}/{report}: + x-requires-extension: MainWP Pro Reports + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + - name: report + in: path + description: Report data set to return. + required: true + schema: + type: string + enum: + - plugins + - themes + - wordpress + - posts + - pages + - users + - comments + - menus + - media + - backups + - maintenance + - sucuri + - wordfence + - ithemes + - virusdie + - domainmonitor + - sslmonitor + - woocomstatus + - vulnerable + - ga + - matomo + - lighthouse + - aum + - uptime + - atarim + - protect + - scan + - website + - abandoned + - pending + - misc + get: + operationId: getProReportsIdDomainReport + summary: Get one Pro Reports data set + description: Returns the activity records behind one Pro Reports section for a site and date range. The `report` + path segment selects the data set. Requires the MainWP Pro Reports extension on the Dashboard. + tags: + - Pro Reports + parameters: + - name: start_date + in: query + description: Start of the range in `Y-m-d` format. + required: true + schema: + type: string + - name: end_date + in: query + description: End of the range in `Y-m-d` format. + required: true + schema: + type: string + - name: action + in: query + description: Activity action to filter on. Which actions apply depends on the report. + required: false + schema: + type: string + - name: format + in: query + description: Response format. + required: false + schema: + type: string + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/ssl-monitor/info: + x-requires-extension: MainWP SSL Monitor + get: + operationId: getSslMonitorInfo + summary: List SSL status for all sites + description: Returns the certificate status the extension recorded for every monitored site. Requires the + MainWP SSL Monitor extension on the Dashboard. + tags: + - SSL Monitor + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/ssl-monitor/info/{id_domain}: + x-requires-extension: MainWP SSL Monitor + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + get: + operationId: getSslMonitorInfoIdDomain + summary: Get SSL status for one site + description: Returns the certificate status the extension recorded for one site. Requires the MainWP SSL Monitor + extension on the Dashboard. + tags: + - SSL Monitor + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/Success' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /wp-json/mainwp/v2/ssl-monitor/{id_domain}: + x-requires-extension: MainWP SSL Monitor + parameters: + - name: id_domain + in: path + description: Site ID or domain. + required: true + schema: + type: string + post: + operationId: postSslMonitorIdDomain + summary: Run an SSL check for one site + description: Checks the certificate on one site now and stores the result. Requires the MainWP SSL Monitor + extension on the Dashboard. + tags: + - SSL Monitor + responses: + '200': + description: Success. + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessMessage' + '401': + description: The API key is missing, malformed, or disabled. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: The API key does not carry the permission this method needs. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No record matches the identifier in the path. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +components: + securitySchemes: + bearerAuth: + type: http + scheme: bearer + description: 'API key created under MainWP Dashboard > API Access > API Keys, sent as `Authorization: Bearer + `.' + schemas: + Success: + type: object + description: Standard success envelope. The shape of `data` depends on the endpoint, and list endpoints add + `total`. + properties: + success: + type: integer + enum: + - 1 + description: Set to 1 when the call succeeded. + message: + type: string + description: Human readable result, present on most write calls. + data: + description: Payload the route returns. + total: + type: integer + description: Number of records in the full result set. + pages: + type: integer + description: Number of pages in the full result set. + required: + - success + SuccessMessage: + type: object + description: Success envelope for calls that return no payload. + properties: + success: + type: integer + enum: + - 1 + description: Set to 1 when the call succeeded. + message: + type: string + description: Human readable result. + required: + - success + QueuedAction: + type: object + description: Returned when the Dashboard queues the work instead of running it inline. Poll `GET /jobs/{id}` + with the returned `job_id`. + properties: + success: + type: integer + enum: + - 1 + message: + type: string + description: Human readable result. + job_id: + type: string + description: Identifier to poll `GET /jobs/{id}` with. + queued_count: + type: integer + description: Number of items placed on the queue. + total: + type: integer + description: Number of items the call covered. + required: + - success + UpdateRunStarted: + type: object + description: Returned when an update run starts inline. + properties: + success: + type: integer + enum: + - 1 + message: + type: string + description: Human readable result. + last_time_start_batch_updates: + type: string + description: When the Dashboard last started a batch update run. + summary: + description: Per-site outcome, present when the run finished inline. + site: + description: The site the run covered, on the per-site route. + required: + - success + Error: + type: object + description: WordPress REST API error body. + properties: + code: + type: string + description: Machine readable error code. + message: + type: string + description: Human readable error text. + data: + type: object + properties: + status: + type: integer + description: HTTP status code. + required: + - code + - message + SitesCount: + type: object + description: Bare count response. This route does not send the `success` key. + properties: + count: + type: integer + description: Number of matching sites. + TotalCount: + type: object + properties: + success: + type: integer + enum: + - 1 + total: + type: integer + description: Number of matching records. + CountResult: + type: object + properties: + success: + type: integer + enum: + - 1 + count: + type: integer + description: Number of matching records. + SiteRecord: + type: object + description: Bare site response. This route does not send the `success` key. + properties: + data: + type: object + description: The stored site record. + BulkSiteResult: + type: object + description: Per-site outcome of a fleet-wide action. This shape does not carry the `success` key. + properties: + total: + type: integer + description: Number of sites the action covered. + data: + type: object + description: Outcome per site, keyed by site ID. + additionalProperties: {} + BatchResult: + type: object + description: Per-item results keyed by action group, for example `create`, `update`, and `delete`. Failed + items carry an `error` object in place of the record. + additionalProperties: {} + ApiKeyCreated: + type: object + properties: + success: + type: integer + enum: + - 1 + message: + type: string + description: Human readable result. + token: + type: string + description: The bearer token. Shown once and not retrievable later. + UserImportReport: + type: object + description: Result of a CSV import. This route does not send the `success` key. + properties: + total: + type: integer + description: Rows read from the file. + success_count: + type: integer + description: Rows that created a user. + failed_count: + type: integer + description: Rows that failed. + success_users: + type: array + description: Created users, with the row each came from. + items: + type: object + failed_users: + type: array + description: Failed rows, each with the reason. + items: + type: object + DestroySessionsStarted: + type: object + description: Acknowledgement that the destroy sessions job was queued. + properties: + success: + type: integer + enum: + - 1 + message: + type: string + description: Human readable result. + destroy_id: + type: string + description: Identifier to poll the status route with. + status_url: + type: string + format: uri + description: Full URL of the status route for this job. + RenewConnectionsStarted: + type: object + description: Acknowledgement that the renew connections job was queued. + properties: + success: + type: integer + enum: + - 1 + message: + type: string + description: Human readable result. + renew_id: + type: string + description: Identifier to poll the status route with. + status_url: + type: string + format: uri + description: Full URL of the status route for this job. + DisconnectAllSitesStarted: + type: object + description: Acknowledgement that the disconnect all sites job was queued. + properties: + success: + type: integer + enum: + - 1 + message: + type: string + description: Human readable result. + disconnect_id: + type: string + description: Identifier to poll the status route with. + status_url: + type: string + format: uri + description: Full URL of the status route for this job. + ToolJobStatus: + type: object + description: Progress of a background maintenance job. + properties: + success: + type: boolean + status: + type: string + description: Current job state. + total: + type: integer + description: Items the job covers. + processed: + type: integer + description: Items handled so far. + failed: + type: integer + description: Items that failed. + progress: + type: number + description: Completion as a percentage. + errors: + type: array + description: Errors recorded so far. + items: + type: string + started_at: + type: string + description: When the job started. + completed_at: + type: string + description: When the job finished. From 5af452a4a5612c7ee5979176df5117dfaf23673d Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Sat, 1 Aug 2026 21:14:12 -0400 Subject: [PATCH 2/6] review fixes: codex adversarial round 1 Batch update items now require the record id, global and controller batch create items share the single-route input schemas, and the global batch updates group is documented as non-functional (updates controller has no create_item). --- api-reference/openapi.yaml | 2932 +++++++++--------------------------- 1 file changed, 688 insertions(+), 2244 deletions(-) diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml index 25bd0c5..0b63bb5 100644 --- a/api-reference/openapi.yaml +++ b/api-reference/openapi.yaml @@ -141,49 +141,13 @@ paths: properties: sites: type: object - description: Site actions. This group takes the extended action set. + description: Site actions. Only this group takes the action arrays. properties: create: type: array - description: Sites to connect. Each item takes the same fields as `POST /sites/add`. + description: Sites to connect. Same fields as `POST /sites/add`. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteCreateInput' sync: type: array description: Site IDs to sync. @@ -239,31 +203,33 @@ paths: properties: create: type: array - description: Clients to create. + description: Clients to create. Same fields as `POST /clients/add`. items: - type: object - updates: + $ref: '#/components/schemas/ClientCreateInput' + costs: type: object properties: create: type: array - description: Update runs to create. + description: Cost records to create. Same fields as `POST /costs/add`. items: - type: object - costs: + $ref: '#/components/schemas/CostInput' + tags: type: object properties: create: type: array - description: Cost records to create. + description: Tags to create. Same fields as `POST /tags/add`. items: - type: object - tags: + $ref: '#/components/schemas/TagCreateInput' + updates: type: object properties: create: type: array - description: Tags to create. + description: 'Accepted by the route but not implemented: the updates controller has no create + handler, so every item comes back as an `invalid-method` error. Use the routes under `/updates` + instead.' items: type: object responses: @@ -301,49 +267,13 @@ paths: properties: sites: type: object - description: Site actions. This group takes the extended action set. + description: Site actions. Only this group takes the action arrays. properties: create: type: array - description: Sites to connect. Each item takes the same fields as `POST /sites/add`. + description: Sites to connect. Same fields as `POST /sites/add`. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteCreateInput' sync: type: array description: Site IDs to sync. @@ -399,31 +329,33 @@ paths: properties: create: type: array - description: Clients to create. + description: Clients to create. Same fields as `POST /clients/add`. items: - type: object - updates: + $ref: '#/components/schemas/ClientCreateInput' + costs: type: object properties: create: type: array - description: Update runs to create. + description: Cost records to create. Same fields as `POST /costs/add`. items: - type: object - costs: + $ref: '#/components/schemas/CostInput' + tags: type: object properties: create: type: array - description: Cost records to create. + description: Tags to create. Same fields as `POST /tags/add`. items: - type: object - tags: + $ref: '#/components/schemas/TagCreateInput' + updates: type: object properties: create: type: array - description: Tags to create. + description: 'Accepted by the route but not implemented: the updates controller has no create + handler, so every item comes back as an `invalid-method` error. Use the routes under `/updates` + instead.' items: type: object responses: @@ -461,49 +393,13 @@ paths: properties: sites: type: object - description: Site actions. This group takes the extended action set. + description: Site actions. Only this group takes the action arrays. properties: create: type: array - description: Sites to connect. Each item takes the same fields as `POST /sites/add`. + description: Sites to connect. Same fields as `POST /sites/add`. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteCreateInput' sync: type: array description: Site IDs to sync. @@ -559,31 +455,33 @@ paths: properties: create: type: array - description: Clients to create. + description: Clients to create. Same fields as `POST /clients/add`. items: - type: object - updates: + $ref: '#/components/schemas/ClientCreateInput' + costs: type: object properties: create: type: array - description: Update runs to create. + description: Cost records to create. Same fields as `POST /costs/add`. items: - type: object - costs: + $ref: '#/components/schemas/CostInput' + tags: type: object properties: create: type: array - description: Cost records to create. + description: Tags to create. Same fields as `POST /tags/add`. items: - type: object - tags: + $ref: '#/components/schemas/TagCreateInput' + updates: type: object properties: create: type: array - description: Tags to create. + description: 'Accepted by the route but not implemented: the updates controller has no create + handler, so every item comes back as an `invalid-method` error. Use the routes under `/updates` + instead.' items: type: object responses: @@ -685,61 +583,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Client name. - client_email: - type: string - format: email - description: Primary contact email. - client_phone: - type: string - description: Primary contact phone number. - address_1: - type: string - description: Street address, first line. - address_2: - type: string - description: Street address, second line. - city: - type: string - description: City. - state: - type: string - description: State or region. - zip: - type: string - description: Postal code. - country: - type: string - description: Country. - note: - type: string - description: Free-form note stored with the client. - client_facebook: - type: string - description: Facebook profile URL. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - client_instagram: - type: string - description: Instagram profile URL. - client_linkedin: - type: string - description: LinkedIn profile URL. - primary_contact_id: - type: integer - description: Contact record to use as the primary contact. - selected_sites: - type: array - items: - type: integer - description: Site IDs to assign to the client. - required: - - name + $ref: '#/components/schemas/ClientCreateInput' responses: '200': description: Success. @@ -776,142 +620,14 @@ paths: properties: create: type: array - description: Records to create. + description: Clients to create. items: - type: object - properties: - address_1: - type: string - description: Address 1. - address_2: - type: string - description: Address 2. - city: - type: string - description: City. - client_email: - type: string - description: Email. - client_facebook: - type: string - description: Facebook. - client_id: - type: integer - description: Client ID. - client_instagram: - type: string - description: Instagram. - client_linkedin: - type: string - description: Linkedin. - client_phone: - type: string - description: Phone. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - country: - type: string - description: Country. - created: - type: integer - description: Created. - description: - type: string - description: Field description. - field_id: - type: integer - description: Field ID. - id: - type: integer - description: Client ID. - name: - type: string - description: Client name. - note: - type: string - description: Free-form note stored with the record. - primary_contact_id: - type: integer - description: Primary contact id. - state: - type: string - description: State. - suspended: - type: integer - description: Suspended. - zip: - type: string - description: Postal code. + $ref: '#/components/schemas/ClientCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Clients to update. Each item is looked up by its `id`. items: - type: object - properties: - address_1: - type: string - description: Address 1. - address_2: - type: string - description: Address 2. - city: - type: string - description: City. - client_email: - type: string - description: Email. - client_facebook: - type: string - description: Facebook. - client_id: - type: integer - description: Client ID. - client_instagram: - type: string - description: Instagram. - client_linkedin: - type: string - description: Linkedin. - client_phone: - type: string - description: Phone. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - country: - type: string - description: Country. - created: - type: integer - description: Created. - description: - type: string - description: Field description. - field_id: - type: integer - description: Field ID. - id: - type: integer - description: Client ID. - name: - type: string - description: Client name. - note: - type: string - description: Free-form note stored with the record. - primary_contact_id: - type: integer - description: Primary contact id. - state: - type: string - description: State. - suspended: - type: integer - description: Suspended. - zip: - type: string - description: Postal code. + $ref: '#/components/schemas/ClientBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -952,142 +668,14 @@ paths: properties: create: type: array - description: Records to create. + description: Clients to create. items: - type: object - properties: - address_1: - type: string - description: Address 1. - address_2: - type: string - description: Address 2. - city: - type: string - description: City. - client_email: - type: string - description: Email. - client_facebook: - type: string - description: Facebook. - client_id: - type: integer - description: Client ID. - client_instagram: - type: string - description: Instagram. - client_linkedin: - type: string - description: Linkedin. - client_phone: - type: string - description: Phone. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - country: - type: string - description: Country. - created: - type: integer - description: Created. - description: - type: string - description: Field description. - field_id: - type: integer - description: Field ID. - id: - type: integer - description: Client ID. - name: - type: string - description: Client name. - note: - type: string - description: Free-form note stored with the record. - primary_contact_id: - type: integer - description: Primary contact id. - state: - type: string - description: State. - suspended: - type: integer - description: Suspended. - zip: - type: string - description: Postal code. + $ref: '#/components/schemas/ClientCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Clients to update. Each item is looked up by its `id`. items: - type: object - properties: - address_1: - type: string - description: Address 1. - address_2: - type: string - description: Address 2. - city: - type: string - description: City. - client_email: - type: string - description: Email. - client_facebook: - type: string - description: Facebook. - client_id: - type: integer - description: Client ID. - client_instagram: - type: string - description: Instagram. - client_linkedin: - type: string - description: Linkedin. - client_phone: - type: string - description: Phone. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - country: - type: string - description: Country. - created: - type: integer - description: Created. - description: - type: string - description: Field description. - field_id: - type: integer - description: Field ID. - id: - type: integer - description: Client ID. - name: - type: string - description: Client name. - note: - type: string - description: Free-form note stored with the record. - primary_contact_id: - type: integer - description: Primary contact id. - state: - type: string - description: State. - suspended: - type: integer - description: Suspended. - zip: - type: string - description: Postal code. + $ref: '#/components/schemas/ClientBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -1128,142 +716,14 @@ paths: properties: create: type: array - description: Records to create. + description: Clients to create. items: - type: object - properties: - address_1: - type: string - description: Address 1. - address_2: - type: string - description: Address 2. - city: - type: string - description: City. - client_email: - type: string - description: Email. - client_facebook: - type: string - description: Facebook. - client_id: - type: integer - description: Client ID. - client_instagram: - type: string - description: Instagram. - client_linkedin: - type: string - description: Linkedin. - client_phone: - type: string - description: Phone. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - country: - type: string - description: Country. - created: - type: integer - description: Created. - description: - type: string - description: Field description. - field_id: - type: integer - description: Field ID. - id: - type: integer - description: Client ID. - name: - type: string - description: Client name. - note: - type: string - description: Free-form note stored with the record. - primary_contact_id: - type: integer - description: Primary contact id. - state: - type: string - description: State. - suspended: - type: integer - description: Suspended. - zip: - type: string - description: Postal code. + $ref: '#/components/schemas/ClientCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Clients to update. Each item is looked up by its `id`. items: - type: object - properties: - address_1: - type: string - description: Address 1. - address_2: - type: string - description: Address 2. - city: - type: string - description: City. - client_email: - type: string - description: Email. - client_facebook: - type: string - description: Facebook. - client_id: - type: integer - description: Client ID. - client_instagram: - type: string - description: Instagram. - client_linkedin: - type: string - description: Linkedin. - client_phone: - type: string - description: Phone. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - country: - type: string - description: Country. - created: - type: integer - description: Created. - description: - type: string - description: Field description. - field_id: - type: integer - description: Field ID. - id: - type: integer - description: Client ID. - name: - type: string - description: Client name. - note: - type: string - description: Free-form note stored with the record. - primary_contact_id: - type: integer - description: Primary contact id. - state: - type: string - description: State. - suspended: - type: integer - description: Suspended. - zip: - type: string - description: Postal code. + $ref: '#/components/schemas/ClientBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -1667,59 +1127,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Client name. - client_email: - type: string - format: email - description: Primary contact email. - client_phone: - type: string - description: Primary contact phone number. - address_1: - type: string - description: Street address, first line. - address_2: - type: string - description: Street address, second line. - city: - type: string - description: City. - state: - type: string - description: State or region. - zip: - type: string - description: Postal code. - country: - type: string - description: Country. - note: - type: string - description: Free-form note stored with the client. - client_facebook: - type: string - description: Facebook profile URL. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - client_instagram: - type: string - description: Instagram profile URL. - client_linkedin: - type: string - description: LinkedIn profile URL. - primary_contact_id: - type: integer - description: Contact record to use as the primary contact. - selected_sites: - type: array - items: - type: integer - description: Site IDs assigned to the client. Replaces the current assignment. + $ref: '#/components/schemas/ClientEditInput' responses: '200': description: Success. @@ -1756,59 +1164,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Client name. - client_email: - type: string - format: email - description: Primary contact email. - client_phone: - type: string - description: Primary contact phone number. - address_1: - type: string - description: Street address, first line. - address_2: - type: string - description: Street address, second line. - city: - type: string - description: City. - state: - type: string - description: State or region. - zip: - type: string - description: Postal code. - country: - type: string - description: Country. - note: - type: string - description: Free-form note stored with the client. - client_facebook: - type: string - description: Facebook profile URL. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - client_instagram: - type: string - description: Instagram profile URL. - client_linkedin: - type: string - description: LinkedIn profile URL. - primary_contact_id: - type: integer - description: Contact record to use as the primary contact. - selected_sites: - type: array - items: - type: integer - description: Site IDs assigned to the client. Replaces the current assignment. + $ref: '#/components/schemas/ClientEditInput' responses: '200': description: Success. @@ -1845,59 +1201,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Client name. - client_email: - type: string - format: email - description: Primary contact email. - client_phone: - type: string - description: Primary contact phone number. - address_1: - type: string - description: Street address, first line. - address_2: - type: string - description: Street address, second line. - city: - type: string - description: City. - state: - type: string - description: State or region. - zip: - type: string - description: Postal code. - country: - type: string - description: Country. - note: - type: string - description: Free-form note stored with the client. - client_facebook: - type: string - description: Facebook profile URL. - client_twitter: - type: string - description: X, formerly Twitter, profile URL. - client_instagram: - type: string - description: Instagram profile URL. - client_linkedin: - type: string - description: LinkedIn profile URL. - primary_contact_id: - type: integer - description: Contact record to use as the primary contact. - selected_sites: - type: array - items: - type: integer - description: Site IDs assigned to the client. Replaces the current assignment. + $ref: '#/components/schemas/ClientEditInput' responses: '200': description: Success. @@ -2757,79 +2061,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. - required: - - cost_tracker_status - - license_type - - name - - payment_method - - payment_type - - price - - product_color - - product_type - - renewal_type + $ref: '#/components/schemas/CostInput' responses: '200': description: Success. @@ -2861,79 +2093,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. - required: - - cost_tracker_status - - license_type - - name - - payment_method - - payment_type - - price - - product_color - - product_type - - renewal_type + $ref: '#/components/schemas/CostInput' responses: '200': description: Success. @@ -2965,79 +2125,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. - required: - - cost_tracker_status - - license_type - - name - - payment_method - - payment_type - - price - - product_color - - product_type - - renewal_type + $ref: '#/components/schemas/CostInput' responses: '200': description: Success. @@ -3074,138 +2162,14 @@ paths: properties: create: type: array - description: Records to create. + description: Cost records to create. items: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. + $ref: '#/components/schemas/CostInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Cost records to update. Each item is looked up by its `id`. items: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. + $ref: '#/components/schemas/CostBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -3246,138 +2210,14 @@ paths: properties: create: type: array - description: Records to create. + description: Cost records to create. items: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. + $ref: '#/components/schemas/CostInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Cost records to update. Each item is looked up by its `id`. items: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. + $ref: '#/components/schemas/CostBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -3418,138 +2258,14 @@ paths: properties: create: type: array - description: Records to create. + description: Cost records to create. items: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. + $ref: '#/components/schemas/CostInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Cost records to update. Each item is looked up by its `id`. items: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. + $ref: '#/components/schemas/CostBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -3673,79 +2389,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. - required: - - cost_tracker_status - - license_type - - name - - payment_method - - payment_type - - price - - product_color - - product_type - - renewal_type + $ref: '#/components/schemas/CostInput' responses: '200': description: Success. @@ -3783,79 +2427,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. - required: - - cost_tracker_status - - license_type - - name - - payment_method - - payment_type - - price - - product_color - - product_type - - renewal_type + $ref: '#/components/schemas/CostInput' responses: '200': description: Success. @@ -3893,79 +2465,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Cost name. - price: - type: number - description: Amount charged per renewal period. - payment_type: - type: string - enum: - - subscription - - lifetime - description: Payment type. - product_type: - type: string - description: Product type slug, as listed by `GET /settings/cost-tracker`. - license_type: - type: string - description: Licence type. - cost_tracker_status: - type: string - description: Record status. - product_color: - type: string - description: Hex colour used for the record in the interface. - payment_method: - type: string - description: Payment method slug, as listed by `GET /settings/cost-tracker`. - renewal_type: - type: string - description: Renewal period. - last_renewal: - type: string - description: Date of the last renewal. Any format `strtotime()` accepts. - sites: - type: array - items: - type: integer - description: Site IDs the cost applies to. - groups: - type: array - items: - type: integer - description: Tag IDs the cost applies to. - clients: - type: array - items: - type: integer - description: Client IDs the cost applies to. - product_slug: - type: string - description: Slug of the product the cost covers. - url: - type: string - format: uri - description: Link to the vendor or product page. - note: - type: string - description: Free-form note stored with the record. - icon_hidden: - type: string - description: Icon shown against the record. - required: - - cost_tracker_status - - license_type - - name - - payment_method - - payment_type - - price - - product_color - - product_type - - renewal_type + $ref: '#/components/schemas/CostInput' responses: '200': description: Success. @@ -8560,49 +7060,7 @@ paths: content: application/json: schema: - type: object - properties: - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - ssl_verify: - type: boolean - description: Verify the SSL certificate of the child site. - force_use_ipv4: - type: boolean - description: Force IPv4 for requests to this site. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. - required: - - admin - - url + $ref: '#/components/schemas/SiteCreateInput' responses: '200': description: Success. @@ -8711,86 +7169,14 @@ paths: properties: create: type: array - description: Records to create. + description: Sites to create. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Sites to update. Each item is looked up by its `id`. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -8831,86 +7217,14 @@ paths: properties: create: type: array - description: Records to create. + description: Sites to create. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Sites to update. Each item is looked up by its `id`. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -8951,86 +7265,14 @@ paths: properties: create: type: array - description: Records to create. + description: Sites to create. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Sites to update. Each item is looked up by its `id`. items: - type: object - properties: - id: - type: integer - description: Site ID. Required on update items. - url: - type: string - format: uri - description: URL of the child site, including the scheme. - admin: - type: string - description: Administrator username on the child site. - adminpassword: - type: string - writeOnly: true - description: Administrator password, required when the child site uses Password Authentication. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID, required when the child site has one set. - name: - type: string - description: Name to show for the site in the Dashboard. - groupids: - type: string - description: Comma separated tag IDs to assign the site to. - client_id: - type: integer - description: Client to assign the site to. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. + $ref: '#/components/schemas/SiteBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -9958,86 +8200,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Name to show for the site in the Dashboard. - adminname: - type: string - description: Administrator username on the child site. - groupids: - type: string - description: Comma separated tag IDs the site belongs to. - client_id: - type: integer - description: Client the site belongs to. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID configured on the child site. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. - protocol: - type: string - description: Scheme used to reach the site. - sslversion: - type: string - description: SSL version to force for requests to this site. - force_use_ipv4: - type: boolean - description: Force IPv4 for requests to this site. - disablehealthchecking: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to stop running site health checks. - healththreshold: - type: integer - description: Health score below which the site counts as unhealthy. - suspended: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to suspend the site. - automatic_update: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to include the site in automatic updates. - backup_before_upgrade: - type: integer - description: Set to 1 to run a backup before updates. - ignore_core_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending core updates for this site. - ignore_plugin_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending plugin updates for this site. - ignore_theme_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending theme updates for this site. - monitoring_emails: - type: string - description: Comma separated addresses that receive monitoring notices for this site. + $ref: '#/components/schemas/SiteEditInput' responses: '200': description: Success. @@ -10074,86 +8237,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Name to show for the site in the Dashboard. - adminname: - type: string - description: Administrator username on the child site. - groupids: - type: string - description: Comma separated tag IDs the site belongs to. - client_id: - type: integer - description: Client the site belongs to. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID configured on the child site. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. - protocol: - type: string - description: Scheme used to reach the site. - sslversion: - type: string - description: SSL version to force for requests to this site. - force_use_ipv4: - type: boolean - description: Force IPv4 for requests to this site. - disablehealthchecking: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to stop running site health checks. - healththreshold: - type: integer - description: Health score below which the site counts as unhealthy. - suspended: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to suspend the site. - automatic_update: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to include the site in automatic updates. - backup_before_upgrade: - type: integer - description: Set to 1 to run a backup before updates. - ignore_core_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending core updates for this site. - ignore_plugin_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending plugin updates for this site. - ignore_theme_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending theme updates for this site. - monitoring_emails: - type: string - description: Comma separated addresses that receive monitoring notices for this site. + $ref: '#/components/schemas/SiteEditInput' responses: '200': description: Success. @@ -10190,86 +8274,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Name to show for the site in the Dashboard. - adminname: - type: string - description: Administrator username on the child site. - groupids: - type: string - description: Comma separated tag IDs the site belongs to. - client_id: - type: integer - description: Client the site belongs to. - uniqueid: - type: string - writeOnly: true - description: Unique Security ID configured on the child site. - http_user: - type: string - writeOnly: true - description: Username for HTTP Basic authentication in front of the child site. - http_pass: - type: string - writeOnly: true - description: Password for HTTP Basic authentication in front of the child site. - protocol: - type: string - description: Scheme used to reach the site. - sslversion: - type: string - description: SSL version to force for requests to this site. - force_use_ipv4: - type: boolean - description: Force IPv4 for requests to this site. - disablehealthchecking: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to stop running site health checks. - healththreshold: - type: integer - description: Health score below which the site counts as unhealthy. - suspended: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to suspend the site. - automatic_update: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to include the site in automatic updates. - backup_before_upgrade: - type: integer - description: Set to 1 to run a backup before updates. - ignore_core_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending core updates for this site. - ignore_plugin_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending plugin updates for this site. - ignore_theme_updates: - type: integer - enum: - - 0 - - 1 - description: Set to 1 to hide pending theme updates for this site. - monitoring_emails: - type: string - description: Comma separated addresses that receive monitoring notices for this site. + $ref: '#/components/schemas/SiteEditInput' responses: '200': description: Success. @@ -11788,16 +9793,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Tag name. - color: - type: string - description: Hex colour used for the tag in the interface, for example `#7fb100`. - required: - - name + $ref: '#/components/schemas/TagCreateInput' responses: '200': description: Success. @@ -11834,50 +9830,14 @@ paths: properties: create: type: array - description: Records to create. + description: Tags to create. items: - type: object - properties: - color: - type: string - description: Tag color. - count_sites: - type: integer - description: Tag Sites. - id: - type: integer - description: Tag ID. - name: - type: string - description: Tag name. - sites_ids: - type: array - items: - type: integer - description: Site IDs assigned to the tag. + $ref: '#/components/schemas/TagCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Tags to update. Each item is looked up by its `id`. items: - type: object - properties: - color: - type: string - description: Tag color. - count_sites: - type: integer - description: Tag Sites. - id: - type: integer - description: Tag ID. - name: - type: string - description: Tag name. - sites_ids: - type: array - items: - type: integer - description: Site IDs assigned to the tag. + $ref: '#/components/schemas/TagBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -11918,50 +9878,14 @@ paths: properties: create: type: array - description: Records to create. + description: Tags to create. items: - type: object - properties: - color: - type: string - description: Tag color. - count_sites: - type: integer - description: Tag Sites. - id: - type: integer - description: Tag ID. - name: - type: string - description: Tag name. - sites_ids: - type: array - items: - type: integer - description: Site IDs assigned to the tag. + $ref: '#/components/schemas/TagCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Tags to update. Each item is looked up by its `id`. items: - type: object - properties: - color: - type: string - description: Tag color. - count_sites: - type: integer - description: Tag Sites. - id: - type: integer - description: Tag ID. - name: - type: string - description: Tag name. - sites_ids: - type: array - items: - type: integer - description: Site IDs assigned to the tag. + $ref: '#/components/schemas/TagBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -12002,50 +9926,14 @@ paths: properties: create: type: array - description: Records to create. + description: Tags to create. items: - type: object - properties: - color: - type: string - description: Tag color. - count_sites: - type: integer - description: Tag Sites. - id: - type: integer - description: Tag ID. - name: - type: string - description: Tag name. - sites_ids: - type: array - items: - type: integer - description: Site IDs assigned to the tag. + $ref: '#/components/schemas/TagCreateInput' update: type: array - description: Records to update. Each item needs the record ID. + description: Tags to update. Each item is looked up by its `id`. items: - type: object - properties: - color: - type: string - description: Tag color. - count_sites: - type: integer - description: Tag Sites. - id: - type: integer - description: Tag ID. - name: - type: string - description: Tag name. - sites_ids: - type: array - items: - type: integer - description: Site IDs assigned to the tag. + $ref: '#/components/schemas/TagBatchUpdateItem' delete: type: array description: IDs of records to delete. @@ -12167,14 +10055,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Tag name. - color: - type: string - description: Hex colour used for the tag in the interface, for example `#7fb100`. + $ref: '#/components/schemas/TagEditInput' responses: '200': description: Success. @@ -12211,14 +10092,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Tag name. - color: - type: string - description: Hex colour used for the tag in the interface, for example `#7fb100`. + $ref: '#/components/schemas/TagEditInput' responses: '200': description: Success. @@ -12255,14 +10129,7 @@ paths: content: application/json: schema: - type: object - properties: - name: - type: string - description: Tag name. - color: - type: string - description: Hex colour used for the tag in the interface, for example `#7fb100`. + $ref: '#/components/schemas/TagEditInput' responses: '200': description: Success. @@ -15741,3 +13608,580 @@ components: completed_at: type: string description: When the job finished. + ClientBatchUpdateItem: + type: object + description: One client update inside a batch request. The client is looked up by `id`. + properties: + id: + type: integer + description: ID of the record to update. + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs assigned to the client. Replaces the current assignment. + required: + - id + ClientCreateInput: + type: object + description: Fields for a new client record. + properties: + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs to assign to the client. + required: + - name + ClientEditInput: + type: object + description: Fields on an existing client record. Send only the fields you want to change. + properties: + name: + type: string + description: Client name. + client_email: + type: string + format: email + description: Primary contact email. + client_phone: + type: string + description: Primary contact phone number. + address_1: + type: string + description: Street address, first line. + address_2: + type: string + description: Street address, second line. + city: + type: string + description: City. + state: + type: string + description: State or region. + zip: + type: string + description: Postal code. + country: + type: string + description: Country. + note: + type: string + description: Free-form note stored with the client. + client_facebook: + type: string + description: Facebook profile URL. + client_twitter: + type: string + description: X, formerly Twitter, profile URL. + client_instagram: + type: string + description: Instagram profile URL. + client_linkedin: + type: string + description: LinkedIn profile URL. + primary_contact_id: + type: integer + description: Contact record to use as the primary contact. + selected_sites: + type: array + items: + type: integer + description: Site IDs assigned to the client. Replaces the current assignment. + CostBatchUpdateItem: + type: object + description: One cost update inside a batch request. The record is looked up by `id`. + properties: + id: + type: integer + description: ID of the record to update. + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - id + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + CostInput: + type: object + description: Fields for a cost record. + properties: + name: + type: string + description: Cost name. + price: + type: number + description: Amount charged per renewal period. + payment_type: + type: string + enum: + - subscription + - lifetime + description: Payment type. + product_type: + type: string + description: Product type slug, as listed by `GET /settings/cost-tracker`. + license_type: + type: string + description: Licence type. + cost_tracker_status: + type: string + description: Record status. + product_color: + type: string + description: Hex colour used for the record in the interface. + payment_method: + type: string + description: Payment method slug, as listed by `GET /settings/cost-tracker`. + renewal_type: + type: string + description: Renewal period. + last_renewal: + type: string + description: Date of the last renewal. Any format `strtotime()` accepts. + sites: + type: array + items: + type: integer + description: Site IDs the cost applies to. + groups: + type: array + items: + type: integer + description: Tag IDs the cost applies to. + clients: + type: array + items: + type: integer + description: Client IDs the cost applies to. + product_slug: + type: string + description: Slug of the product the cost covers. + url: + type: string + format: uri + description: Link to the vendor or product page. + note: + type: string + description: Free-form note stored with the record. + icon_hidden: + type: string + description: Icon shown against the record. + required: + - cost_tracker_status + - license_type + - name + - payment_method + - payment_type + - price + - product_color + - product_type + - renewal_type + SiteBatchUpdateItem: + type: object + description: One site update inside a batch request. The site is looked up by `id`. + properties: + id: + type: integer + description: ID of the record to update. + name: + type: string + description: Name to show for the site in the Dashboard. + adminname: + type: string + description: Administrator username on the child site. + groupids: + type: string + description: Comma separated tag IDs the site belongs to. + client_id: + type: integer + description: Client the site belongs to. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID configured on the child site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + protocol: + type: string + description: Scheme used to reach the site. + sslversion: + type: string + description: SSL version to force for requests to this site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + disablehealthchecking: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to stop running site health checks. + healththreshold: + type: integer + description: Health score below which the site counts as unhealthy. + suspended: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to suspend the site. + automatic_update: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to include the site in automatic updates. + backup_before_upgrade: + type: integer + description: Set to 1 to run a backup before updates. + ignore_core_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending core updates for this site. + ignore_plugin_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending plugin updates for this site. + ignore_theme_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending theme updates for this site. + monitoring_emails: + type: string + description: Comma separated addresses that receive monitoring notices for this site. + required: + - id + SiteCreateInput: + type: object + description: Connection details for a site being added to the Dashboard. + properties: + url: + type: string + format: uri + description: URL of the child site, including the scheme. + admin: + type: string + description: Administrator username on the child site. + adminpassword: + type: string + writeOnly: true + description: Administrator password, required when the child site uses Password Authentication. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID, required when the child site has one set. + name: + type: string + description: Name to show for the site in the Dashboard. + groupids: + type: string + description: Comma separated tag IDs to assign the site to. + client_id: + type: integer + description: Client to assign the site to. + ssl_verify: + type: boolean + description: Verify the SSL certificate of the child site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + required: + - admin + - url + SiteEditInput: + type: object + description: Dashboard-side settings for an existing site. Send only the fields you want to change. + properties: + name: + type: string + description: Name to show for the site in the Dashboard. + adminname: + type: string + description: Administrator username on the child site. + groupids: + type: string + description: Comma separated tag IDs the site belongs to. + client_id: + type: integer + description: Client the site belongs to. + uniqueid: + type: string + writeOnly: true + description: Unique Security ID configured on the child site. + http_user: + type: string + writeOnly: true + description: Username for HTTP Basic authentication in front of the child site. + http_pass: + type: string + writeOnly: true + description: Password for HTTP Basic authentication in front of the child site. + protocol: + type: string + description: Scheme used to reach the site. + sslversion: + type: string + description: SSL version to force for requests to this site. + force_use_ipv4: + type: boolean + description: Force IPv4 for requests to this site. + disablehealthchecking: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to stop running site health checks. + healththreshold: + type: integer + description: Health score below which the site counts as unhealthy. + suspended: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to suspend the site. + automatic_update: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to include the site in automatic updates. + backup_before_upgrade: + type: integer + description: Set to 1 to run a backup before updates. + ignore_core_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending core updates for this site. + ignore_plugin_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending plugin updates for this site. + ignore_theme_updates: + type: integer + enum: + - 0 + - 1 + description: Set to 1 to hide pending theme updates for this site. + monitoring_emails: + type: string + description: Comma separated addresses that receive monitoring notices for this site. + TagBatchUpdateItem: + type: object + description: One tag update inside a batch request. The tag is looked up by `id`. + properties: + id: + type: integer + description: ID of the record to update. + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. + required: + - id + TagCreateInput: + type: object + description: Fields for a new tag. + properties: + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. + required: + - name + TagEditInput: + type: object + description: Fields on an existing tag. + properties: + name: + type: string + description: Tag name. + color: + type: string + description: Hex colour used for the tag in the interface, for example `#7fb100`. From ba06db77645af41fc090fb1c35ae7d3b4388a898 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 3 Aug 2026 10:49:34 -0400 Subject: [PATCH 3/6] Link the OpenAPI specification from the REST API overview --- api-reference/rest-api/overview.mdx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/api-reference/rest-api/overview.mdx b/api-reference/rest-api/overview.mdx index 0c6b1b6..d49f9e7 100644 --- a/api-reference/rest-api/overview.mdx +++ b/api-reference/rest-api/overview.mdx @@ -30,6 +30,7 @@ Your MainWP Dashboard URL must be reachable from the system sending API requests - How to create v2 API keys and optionally enable v1 compatibility in the UI - How to manage key permissions and API access state - Which endpoint category to use for each task +- Where to get the machine-readable OpenAPI specification - How long-running update actions return responses --- @@ -159,6 +160,18 @@ For extension-specific endpoints, see [Extensions Endpoints](/api-reference/rest --- +## OpenAPI Specification + +A machine-readable OpenAPI 3.1.0 description of the full v2 API is maintained in the documentation repository: + +```text +https://raw.githubusercontent.com/mainwp/docs/main/api-reference/openapi.yaml +``` + +Use this URL to import the API into Postman, generate client code, or feed your own tooling. It covers every v2 endpoint, including extension routes, which are marked with `x-requires-extension` since they respond only when the matching extension is installed on your Dashboard. The `info.version` field records the MainWP Dashboard version the specification was written against. + +--- + ## Legacy v1 Compatibility MainWP still supports legacy v1 endpoints (`/wp-json/mainwp/v1/`) for backward compatibility. @@ -203,3 +216,4 @@ After you receive a start or queued response, wait for the process to finish, th - [API Keys Endpoints](/api-reference/rest-api/api-keys) - [Application Passwords](/api-reference/rest-api/application-passwords) - [MainWP API Introduction](/api-reference/introduction) +- [OpenAPI Specification (openapi.yaml)](https://raw.githubusercontent.com/mainwp/docs/main/api-reference/openapi.yaml) From cdb9897c1e1dfa95121852ca4d66ed30f5ba9f14 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 3 Aug 2026 11:28:49 -0400 Subject: [PATCH 4/6] review fixes: coderabbit round 2 Per-monitor active description no longer claims global scope; documented 400 responses on costs add/edit (no target) and per-site update (suspended site), only where the controllers really throw them. --- api-reference/openapi.yaml | 72 +++++++++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 8 deletions(-) diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml index 0b63bb5..8b61a63 100644 --- a/api-reference/openapi.yaml +++ b/api-reference/openapi.yaml @@ -2069,6 +2069,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Success' + '400': + description: 'No target given: send at least one of `sites`, `groups`, or `clients`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -2101,6 +2107,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Success' + '400': + description: 'No target given: send at least one of `sites`, `groups`, or `clients`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -2133,6 +2145,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Success' + '400': + description: 'No target given: send at least one of `sites`, `groups`, or `clients`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -2397,6 +2415,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Success' + '400': + description: 'No target given: send at least one of `sites`, `groups`, or `clients`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -2435,6 +2459,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Success' + '400': + description: 'No target given: send at least one of `sites`, `groups`, or `clients`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -2473,6 +2503,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Success' + '400': + description: 'No target given: send at least one of `sites`, `groups`, or `clients`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -3295,7 +3331,8 @@ paths: - '0' - '1' - useglobal - description: Active or disable monitoring globally. + description: Enable or disable monitoring for this site. Set `useglobal` to follow the global + default. expected_status: type: array description: Expected HTTP status codes. @@ -3375,7 +3412,8 @@ paths: - '0' - '1' - useglobal - description: Active or disable monitoring globally. + description: Enable or disable monitoring for this site. Set `useglobal` to follow the global + default. expected_status: type: array description: Expected HTTP status codes. @@ -11791,8 +11829,8 @@ paths: post: operationId: postUpdatesIdDomainUpdate summary: Run updates on one site - description: Starts the pending updates on one site. Suspended sites are rejected with a 400. The response - carries a `job_id` when the Dashboard queues the work. + description: Starts the pending updates on one site. The response carries a `job_id` when the Dashboard queues + the work. tags: - Updates responses: @@ -11804,6 +11842,12 @@ paths: oneOf: - $ref: '#/components/schemas/UpdateRunStarted' - $ref: '#/components/schemas/QueuedAction' + '400': + description: The site is suspended. Unsuspend it before running updates. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -11825,8 +11869,8 @@ paths: put: operationId: putUpdatesIdDomainUpdate summary: Run updates on one site - description: Starts the pending updates on one site. Suspended sites are rejected with a 400. The response - carries a `job_id` when the Dashboard queues the work. + description: Starts the pending updates on one site. The response carries a `job_id` when the Dashboard queues + the work. tags: - Updates responses: @@ -11838,6 +11882,12 @@ paths: oneOf: - $ref: '#/components/schemas/UpdateRunStarted' - $ref: '#/components/schemas/QueuedAction' + '400': + description: The site is suspended. Unsuspend it before running updates. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: @@ -11859,8 +11909,8 @@ paths: patch: operationId: patchUpdatesIdDomainUpdate summary: Run updates on one site - description: Starts the pending updates on one site. Suspended sites are rejected with a 400. The response - carries a `job_id` when the Dashboard queues the work. + description: Starts the pending updates on one site. The response carries a `job_id` when the Dashboard queues + the work. tags: - Updates responses: @@ -11872,6 +11922,12 @@ paths: oneOf: - $ref: '#/components/schemas/UpdateRunStarted' - $ref: '#/components/schemas/QueuedAction' + '400': + description: The site is suspended. Unsuspend it before running updates. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '401': description: The API key is missing, malformed, or disabled. content: From 1a9dd20ca3646c8a7ca6bca213dd28b63174107e Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 3 Aug 2026 12:04:51 -0400 Subject: [PATCH 5/6] review fixes: PR coderabbit round Fix the Enable/disable verb error in toggle descriptions, prefix the Lighthouse x-requires-extension values, and type the array fields whose element shape the controllers prove; sync_data and mainwp_widgets become objects because their validators reject JSON arrays outright. --- api-reference/openapi.yaml | 109 +++++++++++++++++++++++++++---------- 1 file changed, 81 insertions(+), 28 deletions(-) diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml index 8b61a63..38fec95 100644 --- a/api-reference/openapi.yaml +++ b/api-reference/openapi.yaml @@ -2868,10 +2868,10 @@ paths: properties: active: type: boolean - description: Active or disable monitoring globally. + description: Enable or disable monitoring globally. expected_status: type: array - description: Expected HTTP status codes. + description: Expected HTTP status codes, as a comma separated list such as `200,301`. interval: type: string description: Default check frequency (e.g., "5m", "1h"). @@ -2938,10 +2938,10 @@ paths: properties: active: type: boolean - description: Active or disable monitoring globally. + description: Enable or disable monitoring globally. expected_status: type: array - description: Expected HTTP status codes. + description: Expected HTTP status codes, as a comma separated list such as `200,301`. interval: type: string description: Default check frequency (e.g., "5m", "1h"). @@ -3335,7 +3335,8 @@ paths: default. expected_status: type: array - description: Expected HTTP status codes. + description: Expected HTTP status codes, as a comma separated list such as `200,301`. Set `useglobal` + to follow the global default. interval: type: string description: Default check frequency (e.g., "5m", "1h"). @@ -3416,7 +3417,8 @@ paths: default. expected_status: type: array - description: Expected HTTP status codes. + description: Expected HTTP status codes, as a comma separated list such as `200,301`. Set `useglobal` + to follow the global default. interval: type: string description: Default check frequency (e.g., "5m", "1h"). @@ -4258,6 +4260,28 @@ paths: description: Featured image URL or data. post_gallery_images: type: array + items: + type: object + properties: + id: + type: integer + description: Attachment ID on the source site. Used to remap gallery IDs in the post content. + src: + type: string + format: uri + description: Image URL. The child site downloads this into its media library. + title: + type: string + description: Attachment title. + alt: + type: string + description: Alt text. + caption: + type: string + description: Attachment caption. + description: + type: string + description: Attachment description. description: Gallery images array. post_name: type: string @@ -4737,7 +4761,7 @@ paths: properties: active: type: boolean - description: Active or disable API key. + description: Enable or disable API key. description: type: string description: API key description. @@ -4829,7 +4853,7 @@ paths: properties: active: type: boolean - description: Active or disable API key. + description: Enable or disable API key. description: type: string description: API key description. @@ -4877,7 +4901,7 @@ paths: properties: active: type: boolean - description: Active or disable API key. + description: Enable or disable API key. description: type: string description: API key description. @@ -5063,8 +5087,14 @@ paths: type: boolean description: Use WP Cron. sync_data: - type: array - description: Sync data. + type: object + additionalProperties: + type: integer + enum: + - 0 + - 1 + description: Sync data toggles, keyed by the setting names already stored on the Dashboard. Send + 1 to enable a key and 0 to disable it. Unknown keys are rejected. responses: '200': description: Success. @@ -5166,8 +5196,14 @@ paths: type: boolean description: Use WP Cron. sync_data: - type: array - description: Sync data. + type: object + additionalProperties: + type: integer + enum: + - 0 + - 1 + description: Sync data toggles, keyed by the setting names already stored on the Dashboard. Send + 1 to enable a key and 0 to disable it. Unknown keys are rejected. responses: '200': description: Success. @@ -6230,8 +6266,14 @@ paths: - module-api-backups description: Primary backup method. mainwp_widgets: - type: array - description: MainWP dashboard widgets. + type: object + additionalProperties: + type: integer + enum: + - 0 + - 1 + description: Dashboard widget visibility, keyed by widget name. Send 1 to show a widget and 0 + to hide it. Unknown keys are rejected. numberdays_outdate_plugin_theme: type: integer description: Number of days to consider plugin/theme as outdated. @@ -6395,8 +6437,14 @@ paths: - module-api-backups description: Primary backup method. mainwp_widgets: - type: array - description: MainWP dashboard widgets. + type: object + additionalProperties: + type: integer + enum: + - 0 + - 1 + description: Dashboard widget visibility, keyed by widget name. Send 1 to show a widget and 0 + to hide it. Unknown keys are rejected. numberdays_outdate_plugin_theme: type: integer description: Number of days to consider plugin/theme as outdated. @@ -6497,7 +6545,7 @@ paths: description: Site health threshold. mainwp_uptime_monitoring_active: type: boolean - description: Active or disable monitoring globally. + description: Enable or disable monitoring globally. mainwp_uptime_monitoring_down_confirmation_check: type: integer enum: @@ -6522,6 +6570,8 @@ paths: description: Uptime monitoring type. mainwp_uptime_monitoring_up_status_codes: type: array + items: + type: integer description: Uptime monitoring up status codes. responses: '200': @@ -6566,7 +6616,7 @@ paths: description: Site health threshold. mainwp_uptime_monitoring_active: type: boolean - description: Active or disable monitoring globally. + description: Enable or disable monitoring globally. mainwp_uptime_monitoring_down_confirmation_check: type: integer enum: @@ -6591,6 +6641,8 @@ paths: description: Uptime monitoring type. mainwp_uptime_monitoring_up_status_codes: type: array + items: + type: integer description: Uptime monitoring up status codes. responses: '200': @@ -13036,12 +13088,12 @@ paths: schema: $ref: '#/components/schemas/Error' /wp-json/mainwp/v2/lighthouse/audit: - x-requires-extension: Lighthouse + x-requires-extension: MainWP Lighthouse post: operationId: postLighthouseAudit summary: Run Lighthouse audits for all sites - description: Starts a Lighthouse audit for every site the extension supports. Requires the Lighthouse extension - on the Dashboard. + description: Starts a Lighthouse audit for every site the extension supports. Requires the MainWP Lighthouse + extension on the Dashboard. tags: - Lighthouse responses: @@ -13064,7 +13116,7 @@ paths: schema: $ref: '#/components/schemas/Error' /wp-json/mainwp/v2/lighthouse/audit/{id_domain}: - x-requires-extension: Lighthouse + x-requires-extension: MainWP Lighthouse parameters: - name: id_domain in: path @@ -13075,7 +13127,7 @@ paths: post: operationId: postLighthouseAuditIdDomain summary: Run a Lighthouse audit for one site - description: Starts a Lighthouse audit for one site. Requires the Lighthouse extension on the Dashboard. + description: Starts a Lighthouse audit for one site. Requires the MainWP Lighthouse extension on the Dashboard. tags: - Lighthouse responses: @@ -13104,12 +13156,12 @@ paths: schema: $ref: '#/components/schemas/Error' /wp-json/mainwp/v2/lighthouse/results: - x-requires-extension: Lighthouse + x-requires-extension: MainWP Lighthouse get: operationId: getLighthouseResults summary: List Lighthouse results for all sites description: Returns the stored performance, accessibility, best practice, and SEO scores for every audited - site. Requires the Lighthouse extension on the Dashboard. + site. Requires the MainWP Lighthouse extension on the Dashboard. tags: - Lighthouse responses: @@ -13132,7 +13184,7 @@ paths: schema: $ref: '#/components/schemas/Error' /wp-json/mainwp/v2/lighthouse/results/{id_domain}: - x-requires-extension: Lighthouse + x-requires-extension: MainWP Lighthouse parameters: - name: id_domain in: path @@ -13143,7 +13195,8 @@ paths: get: operationId: getLighthouseResultsIdDomain summary: Get Lighthouse results for one site - description: Returns the stored Lighthouse scores for one site. Requires the Lighthouse extension on the Dashboard. + description: Returns the stored Lighthouse scores for one site. Requires the MainWP Lighthouse extension on + the Dashboard. tags: - Lighthouse responses: From c565f33bf4e843150665eac4162328428241e123 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 3 Aug 2026 12:09:39 -0400 Subject: [PATCH 6/6] review fixes: expected_status is a comma separated string, not an array An array payload degrades to the string "Array" in the sanitizer and can never validate; the route's own settings schema already declares string. --- api-reference/openapi.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api-reference/openapi.yaml b/api-reference/openapi.yaml index 38fec95..69aeb53 100644 --- a/api-reference/openapi.yaml +++ b/api-reference/openapi.yaml @@ -2870,7 +2870,7 @@ paths: type: boolean description: Enable or disable monitoring globally. expected_status: - type: array + type: string description: Expected HTTP status codes, as a comma separated list such as `200,301`. interval: type: string @@ -2940,7 +2940,7 @@ paths: type: boolean description: Enable or disable monitoring globally. expected_status: - type: array + type: string description: Expected HTTP status codes, as a comma separated list such as `200,301`. interval: type: string @@ -3334,7 +3334,7 @@ paths: description: Enable or disable monitoring for this site. Set `useglobal` to follow the global default. expected_status: - type: array + type: string description: Expected HTTP status codes, as a comma separated list such as `200,301`. Set `useglobal` to follow the global default. interval: @@ -3416,7 +3416,7 @@ paths: description: Enable or disable monitoring for this site. Set `useglobal` to follow the global default. expected_status: - type: array + type: string description: Expected HTTP status codes, as a comma separated list such as `200,301`. Set `useglobal` to follow the global default. interval: