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.5
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: 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. Only this group takes the action arrays.
                  properties:
                    create:
                      type: array
                      description: Sites to connect. Same fields as `POST /sites/add`.
                      items:
                        $ref: '#/components/schemas/SiteCreateInput'
                    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. Same fields as `POST /clients/add`.
                      items:
                        $ref: '#/components/schemas/ClientCreateInput'
                costs:
                  type: object
                  properties:
                    create:
                      type: array
                      description: >-
                        Cost records to create. Same fields as `POST
                        /costs/add`.
                      items:
                        $ref: '#/components/schemas/CostInput'
                tags:
                  type: object
                  properties:
                    create:
                      type: array
                      description: Tags to create. Same fields as `POST /tags/add`.
                      items:
                        $ref: '#/components/schemas/TagCreateInput'
                updates:
                  type: object
                  properties:
                    create:
                      type: array
                      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:
        '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, or 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. Only this group takes the action arrays.
                  properties:
                    create:
                      type: array
                      description: Sites to connect. Same fields as `POST /sites/add`.
                      items:
                        $ref: '#/components/schemas/SiteCreateInput'
                    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. Same fields as `POST /clients/add`.
                      items:
                        $ref: '#/components/schemas/ClientCreateInput'
                costs:
                  type: object
                  properties:
                    create:
                      type: array
                      description: >-
                        Cost records to create. Same fields as `POST
                        /costs/add`.
                      items:
                        $ref: '#/components/schemas/CostInput'
                tags:
                  type: object
                  properties:
                    create:
                      type: array
                      description: Tags to create. Same fields as `POST /tags/add`.
                      items:
                        $ref: '#/components/schemas/TagCreateInput'
                updates:
                  type: object
                  properties:
                    create:
                      type: array
                      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:
        '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, or 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. Only this group takes the action arrays.
                  properties:
                    create:
                      type: array
                      description: Sites to connect. Same fields as `POST /sites/add`.
                      items:
                        $ref: '#/components/schemas/SiteCreateInput'
                    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. Same fields as `POST /clients/add`.
                      items:
                        $ref: '#/components/schemas/ClientCreateInput'
                costs:
                  type: object
                  properties:
                    create:
                      type: array
                      description: >-
                        Cost records to create. Same fields as `POST
                        /costs/add`.
                      items:
                        $ref: '#/components/schemas/CostInput'
                tags:
                  type: object
                  properties:
                    create:
                      type: array
                      description: Tags to create. Same fields as `POST /tags/add`.
                      items:
                        $ref: '#/components/schemas/TagCreateInput'
                updates:
                  type: object
                  properties:
                    create:
                      type: array
                      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:
        '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, or 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, or 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:
              $ref: '#/components/schemas/ClientCreateInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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: Clients to create.
                  items:
                    $ref: '#/components/schemas/ClientCreateInput'
                update:
                  type: array
                  description: Clients to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/ClientBatchUpdateItem'
                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, or 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: Clients to create.
                  items:
                    $ref: '#/components/schemas/ClientCreateInput'
                update:
                  type: array
                  description: Clients to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/ClientBatchUpdateItem'
                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, or 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: Clients to create.
                  items:
                    $ref: '#/components/schemas/ClientCreateInput'
                update:
                  type: array
                  description: Clients to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/ClientBatchUpdateItem'
                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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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:
              $ref: '#/components/schemas/ClientEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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:
              $ref: '#/components/schemas/ClientEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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:
              $ref: '#/components/schemas/ClientEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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:
              $ref: '#/components/schemas/CostInput'
      responses:
        '200':
          description: Success.
          content:
            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, or 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:
              $ref: '#/components/schemas/CostInput'
      responses:
        '200':
          description: Success.
          content:
            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, or 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:
              $ref: '#/components/schemas/CostInput'
      responses:
        '200':
          description: Success.
          content:
            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, or 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: Cost records to create.
                  items:
                    $ref: '#/components/schemas/CostInput'
                update:
                  type: array
                  description: Cost records to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/CostBatchUpdateItem'
                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, or 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: Cost records to create.
                  items:
                    $ref: '#/components/schemas/CostInput'
                update:
                  type: array
                  description: Cost records to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/CostBatchUpdateItem'
                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, or 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: Cost records to create.
                  items:
                    $ref: '#/components/schemas/CostInput'
                update:
                  type: array
                  description: Cost records to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/CostBatchUpdateItem'
                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, or 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, or 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, or 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:
              $ref: '#/components/schemas/CostInput'
      responses:
        '200':
          description: Success.
          content:
            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, or 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:
              $ref: '#/components/schemas/CostInput'
      responses:
        '200':
          description: Success.
          content:
            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, or 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:
              $ref: '#/components/schemas/CostInput'
      responses:
        '200':
          description: Success.
          content:
            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, or 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, or 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, or 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, or 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, or 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, or 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: Enable or disable monitoring globally.
                expected_status:
                  type: string
                  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").
                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, or 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: Enable or disable monitoring globally.
                expected_status:
                  type: string
                  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").
                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, or 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, or 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, or 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, or 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, or 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, or 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, or 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: >-
                    Enable or disable monitoring for this site. Set `useglobal`
                    to follow the global default.
                expected_status:
                  type: string
                  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").
                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, or 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: >-
                    Enable or disable monitoring for this site. Set `useglobal`
                    to follow the global default.
                expected_status:
                  type: string
                  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").
                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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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
                  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
                  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, or 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, or 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, or 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, or 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, or 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, or 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, or 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: Enable 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, or 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, or 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: Enable 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, or 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: Enable 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, or 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, or 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, or 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: 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.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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: 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.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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: 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.
                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, or 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: 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.
                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, or 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, or 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: Enable 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
                  items:
                    type: integer
                  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, or 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: Enable 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
                  items:
                    type: integer
                  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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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:
              $ref: '#/components/schemas/SiteCreateInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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, or 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: Sites to create.
                  items:
                    $ref: '#/components/schemas/SiteCreateInput'
                update:
                  type: array
                  description: Sites to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/SiteBatchUpdateItem'
                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, or 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: Sites to create.
                  items:
                    $ref: '#/components/schemas/SiteCreateInput'
                update:
                  type: array
                  description: Sites to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/SiteBatchUpdateItem'
                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, or 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: Sites to create.
                  items:
                    $ref: '#/components/schemas/SiteCreateInput'
                update:
                  type: array
                  description: Sites to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/SiteBatchUpdateItem'
                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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      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, or 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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      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, or 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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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:
              $ref: '#/components/schemas/SiteEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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:
              $ref: '#/components/schemas/SiteEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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:
              $ref: '#/components/schemas/SiteEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      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, or 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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      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, or 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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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:
              $ref: '#/components/schemas/TagCreateInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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: Tags to create.
                  items:
                    $ref: '#/components/schemas/TagCreateInput'
                update:
                  type: array
                  description: Tags to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/TagBatchUpdateItem'
                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, or 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: Tags to create.
                  items:
                    $ref: '#/components/schemas/TagCreateInput'
                update:
                  type: array
                  description: Tags to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/TagBatchUpdateItem'
                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, or 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: Tags to create.
                  items:
                    $ref: '#/components/schemas/TagCreateInput'
                update:
                  type: array
                  description: Tags to update. Each item is looked up by its `id`.
                  items:
                    $ref: '#/components/schemas/TagBatchUpdateItem'
                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, or 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, or 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, or 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:
              $ref: '#/components/schemas/TagEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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:
              $ref: '#/components/schemas/TagEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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:
              $ref: '#/components/schemas/TagEditInput'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        '401':
          description: >-
            The API key is missing, malformed, or disabled, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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. Job
        status is exposed through the `mainwp/get-batch-job-status-v1` ability
        on the WordPress Abilities API, which uses WordPress authentication
        rather than the MainWP API key; no MainWP REST API v2 route serves it.
      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, or 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. Job
        status is exposed through the `mainwp/get-batch-job-status-v1` ability
        on the WordPress Abilities API, which uses WordPress authentication
        rather than the MainWP API key; no MainWP REST API v2 route serves it.
      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, or 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. Job
        status is exposed through the `mainwp/get-batch-job-status-v1` ability
        on the WordPress Abilities API, which uses WordPress authentication
        rather than the MainWP API key; no MainWP REST API v2 route serves it.
      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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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. 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'
        '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, or 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. 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'
        '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, or 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. 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'
        '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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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, or 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: putDomainMonitorIdDomain
      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, or 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: patchDomainMonitorIdDomain
      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, or 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: 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 MainWP 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, or does not carry
            the permission this method needs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: putLighthouseAudit
      summary: Run Lighthouse audits for all sites
      description: >-
        Starts a Lighthouse audit for every site the extension supports.
        Requires the MainWP 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, or does not carry
            the permission this method needs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: patchLighthouseAudit
      summary: Run Lighthouse audits for all sites
      description: >-
        Starts a Lighthouse audit for every site the extension supports.
        Requires the MainWP 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, or 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: MainWP 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 MainWP 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, or 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: putLighthouseAuditIdDomain
      summary: Run a Lighthouse audit for one site
      description: >-
        Starts a Lighthouse audit for one site. Requires the MainWP 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, or 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: patchLighthouseAuditIdDomain
      summary: Run a Lighthouse audit for one site
      description: >-
        Starts a Lighthouse audit for one site. Requires the MainWP 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, or 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: 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 MainWP 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, or 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: MainWP 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 MainWP
        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, or 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
            - widgets
            - backups
            - maintenance
            - sucuri
            - wordfence
            - ithemes
            - virusdie
            - domainmonitor
            - sslmonitor
            - pagespeed
            - woocomstatus
            - vulnerable
            - ga
            - matomo
            - lighthouse
            - aum
            - uptime
            - atarim
            - protect
            - scan
            - website
            - abandoned
            - pending
            - misc
            - multi-tokens
    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. When either date is missing,
            the range defaults to the last year.
          required: false
          schema:
            type: string
        - name: end_date
          in: query
          description: >-
            End of the range in `Y-m-d` format. When either date is missing, the
            range defaults to the last year.
          required: false
          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
        - name: multi_tokens
          in: query
          description: >-
            Report template content whose tokens the Dashboard resolves, for
            example `[client.name]`. Required when `report` is `multi-tokens`;
            ignored by every other report.
          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, or 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, or 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, or 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, or 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: putSslMonitorIdDomain
      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, or 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: patchSslMonitorIdDomain
      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, or 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 <key>`.
  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:
            - 0
            - 1
          description: >-
            1 when the call succeeded. Some routes report a failed action as 0
            inside an HTTP 200 response.
        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:
            - 0
            - 1
          description: >-
            1 when the call succeeded. Some routes report a failed action as 0
            inside an HTTP 200 response.
        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. Job status is exposed through the
        `mainwp/get-batch-job-status-v1` ability on the WordPress Abilities API,
        which uses WordPress authentication rather than the MainWP API key; no
        MainWP REST API v2 route serves it.
      properties:
        success:
          type: integer
          enum:
            - 1
        message:
          type: string
          description: Human readable result.
        job_id:
          type: string
          description: >-
            Job identifier to pass to the `mainwp/get-batch-job-status-v1`
            ability.
        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:
            - 0
            - 1
          description: >-
            1 when the count was produced, 0 when the monitor or its data could
            not be found.
        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: object
            properties:
              site_id:
                type: integer
                description: Site the error belongs to.
              error:
                type: string
                description: Error text.
        started_at:
          type:
            - string
            - 'null'
          description: Reserved. Current Dashboard versions return an empty string or null.
        completed_at:
          type:
            - integer
            - string
            - 'null'
          description: >-
            Unix timestamp of when the job finished. An empty string or null
            while the job is still running.
    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`.
