openapi: 3.0.0
info:
  description: Rocket.net API
  version: 1.0.0
  title: Rocket.net API
  contact:
    name: Rocket.net API Support
    url: http://www.rocket.net
    email: support@rocket.net
servers:
  - url: https://api.rocket.net
tags:
  - name: Billing
    description: Manage orders and billing
  - name: Authentication
    description: Create a JWT
  - name: Sites
    description: Manage your WordPress Sites
  - name: Site Templates
    description: Use templates to Clone / Create sites with pre-defined options
  - name: Partner
    description: Manage your site with partner options
  - name: Domains
    description: Manage your Site's Domains
  - name: CDN Cache
    description: Manage your Site's CDN Cache
  - name: FTP Accounts
    description: Manage your Site's FTP Accounts
  - name: Plugins
    description: Manage your Site's Plugins
  - name: Themes
    description: Manage your Site's Themes
  - name: Reporting
    description: View reporting for your Sites
  - name: SSH Keys
    description: Manage your Site's SSH Keys
  - name: Custom SSL
    description: Manage Custom SSL Certificates
  - name: Visitors
    description: View unique visitor statistics for site or account
  - name: Bandwidth
    description: View bandwidth usage over time for site or account
  - name: Cloud Backups
    description: Manage your Site's cloud backups
  - name: Backups
    description: Manage your Site's backups
  - name: Files
    description: Manage your Site's files
  - name: Account
    description: Get Information about your Rocket.net Account
  - name: Activity
    description: Manage Site's activity
  - name: Site Users
    description: Manage Site's users
  - name: Password Protection
    description: Manage password protection for sites
  - name: Password Strength
    description: Check password strength against requirements
  - name: Account Users
    description: Manage additional users for your Account
  - name: ShopShield
    description: Protect your site from traffic bursts
  - name: Site Transfers
    description: Manage site transfers between accounts
  - name: WordPress
    description: Interact with your site's WordPress installation
paths:
  /v1/account/cancel:
    post:
      operationId: app.controllers.account_controller.post_request_cancel_account
      summary: Request that your Rocket.net account be cancelled
      description: Submits a cancellation request that will be reviewed and completed by the billing team
      tags:
        - Account
      security:
        - bearerAuth: []
      requestBody:
        description: Create a hosting plan
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelAccountRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/hosting_plan:
    get:
      operationId: app.controllers.account_controller.get_hosting_plan
      summary: Get Current Hosting Plan
      description: Provides detailed information about your current hosting plan
      tags:
        - Account
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountHostingPlanResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: app.controllers.account_controller.put_hosting_plan
      summary: Change Account's Hosting Plan
      description: Change the account's hosting plan and generate an order and invoice for the new plan
      tags:
        - Account
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: preview
          schema:
            type: boolean
            default: false
          required: false
      requestBody:
        description: Create a hosting plan
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAccountHostingPlanRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAccountHostingPlanResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.account_controller.post_hosting_plan
      summary: Set Hosting Plan
      description: Selects a hosting plan for the first time and creates an order and invoice
      tags:
        - Account
      security:
        - bearerAuth: []
      requestBody:
        description: Create a hosting plan
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAccountHostingPlanRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAccountHostingPlanResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/me:
    get:
      operationId: app.controllers.account_controller.account_me_get
      summary: Get user information
      description: For given user get his customer information in one place
      tags:
        - Account
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountMeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      summary: Update user account settings
      description: Update your user account information
      operationId: app.controllers.account_controller.account_me_patch
      tags:
        - Account
      security:
        - bearerAuth: []
      requestBody:
        description: Updated user account information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAccountMeRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountMeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/visitors:
    get:
      operationId: app.controllers.visitors_controller.account_visitors_get
      summary: Get unique visitors statistics for user account.
      description: For given account get list of unique visitors per day.
      tags:
        - Visitors
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: date_from
          schema:
            type: string
            format: date
          required: true
        - in: query
          name: date_to
          schema:
            type: string
            format: date
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitorsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/usage:
    get:
      operationId: app.controllers.account_controller.account_usage_get
      summary: Get unique usage statistics for user account.
      description: For given account get list of usages for all sites per day.
      tags:
        - Account
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: date_from
          schema:
            $ref: '#/components/schemas/DateFrom'
          required: false
        - in: query
          name: date_to
          schema:
            $ref: '#/components/schemas/DateTo'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountUsageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/bandwidth:
    get:
      operationId: app.controllers.bandwidth_controller.account_bandwidth_get
      summary: Get bandwidth usage statistics for user account.
      description: For given account get list of bandwidth usage per day.
      tags:
        - Bandwidth
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: date_from
          schema:
            $ref: '#/components/schemas/DateFrom'
          required: false
        - in: query
          name: date_to
          schema:
            $ref: '#/components/schemas/DateTo'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BandwidthUsageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/billing_sso:
    post:
      operationId: app.controllers.account_controller.account_billing_sso_post
      summary: Get a cookie to allow for access to billing data
      description: Get  cookie to allow for access to billing data and perform billing operations
      tags:
        - Account
      security:
        - bearerAuth: []
      requestBody:
        description: Information about where to SSO to
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingSSORequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSSOResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/password:
    post:
      summary: Set a new password for your account
      description: Set a new password for your account
      operationId: app.controllers.account_controller.account_password_post
      tags:
        - Account
      security:
        - bearerAuth: []
      requestBody:
        description: Password Information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/account/tasks:
    get:
      operationId: app.controllers.account_controller.account_tasks_get
      summary: Get a list of account level tasks
      description: List tasks which are not associated with a specific site
      tags:
        - Account
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: task_id
          schema:
            $ref: '#/components/schemas/TaskID'
          required: false
        - in: query
          name: task_type
          schema:
            $ref: '#/components/schemas/AccountTaskType'
          required: false
        - in: query
          name: task_status
          schema:
            $ref: '#/components/schemas/TaskStatus'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            type: integer
            default: 100
            description: Results per page
            example: 10
          required: false
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - id
              - perc
              - task_status
              - task_type
              - updated
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccountTasksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/addresses:
    get:
      operationId: app.controllers.billing_controller.get_billing_addresses
      summary: List Billing Addresses
      description: List all addresses which can be associated with payments
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingAddressesResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.billing_controller.post_billing_addresses
      summary: Create Billing Address
      description: Add a new address which can be associated with a payment method
      tags:
        - Billing
      security:
        - bearerAuth: []
      requestBody:
        description: Create a new billing address
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBillingAddressRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBillingAddressResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/addresses/{address_id}:
    get:
      operationId: app.controllers.billing_controller.get_billing_addresses_address_id
      summary: Get Billing Address
      description: Get specific details about a billing address
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: address_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingAddressResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.billing_controller.patch_billing_addresses_address_id
      summary: Update Billing Address
      description: Update a billing address
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: address_id
          schema:
            type: integer
          required: true
      requestBody:
        description: Update a billing address
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBillingAddressRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.billing_controller.delete_billing_addresses_address_id
      summary: Delete Billing Address
      description: Removes a billing address from the account
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: address_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/emails:
    get:
      operationId: app.controllers.billing_controller.get_billing_emails
      summary: List Billing Emails
      description: List all billing related emails associated with the account
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingEmailsResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/emails/{email_id}:
    get:
      operationId: app.controllers.billing_controller.get_billing_emails_email_id
      summary: Get Billing Email
      description: Get specific details about a billing email
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: email_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingEmailResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/invoices:
    get:
      operationId: app.controllers.billing_controller.get_billing_invoices
      summary: List Invoices
      description: List all invoices associated with the account
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: search
          schema:
            type: string
          required: false
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - id
              - date
              - due_date
              - dollar_amount
              - status
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
        - in: query
          name: status
          schema:
            type: string
            enum:
              - Cancelled
              - Collections
              - Draft
              - Payment Pending
              - Paid
              - Refunded
              - Unpaid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingInvoicesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/invoices/{invoice_id}:
    get:
      operationId: app.controllers.billing_controller.get_billing_invoices_invoice_id
      summary: Get Invoice
      description: Get full details of an invoice and ay associated transactions
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: invoice_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingInvoiceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/invoices/{invoice_id}/credit_card_payment:
    post:
      operationId: app.controllers.billing_controller.post_billing_invoices_invoice_id_credit_card_payment
      summary: Record a Credit Card Payment
      description: Used to create a credit card payment
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: invoice_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/invoices/{invoice_id}/paypal_subscription:
    patch:
      operationId: app.controllers.billing_controller.patch_billing_invoices_invoice_id_paypal_subscription
      summary: Update a PayPal Subscription
      description: Used to verify that a subscription was created upon callback from PayPal SDK
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: invoice_id
          schema:
            type: integer
          required: true
      requestBody:
        description: Record a subscription creation
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBillingPayPalSubscriptionRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.billing_controller.post_billing_invoices_invoice_id_paypal_subscription
      summary: Create a PayPal Subscription
      description: Used to create a PayPal subscription which can be used with PayPal's SDK Buttons
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: invoice_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBillingPayPalSubscriptionResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/invoices/{invoice_id}/pdf:
    get:
      operationId: app.controllers.billing_controller.get_billing_invoices_invoice_id_pdf
      summary: Download Invoice PDF
      description: Download a PDF copy of a specific Invoice
      tags:
        - Billing
      parameters:
        - in: path
          name: invoice_id
          schema:
            type: integer
          required: true
        - in: query
          name: token
          schema:
            type: string
          required: true
        - in: query
          name: embed
          schema:
            type: boolean
            default: false
          required: false
      responses:
        '200':
          description: OK
          content:
            application/pdf:
              schema:
                type: string
                format: binary
                description: PDF data
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/payment_methods:
    get:
      operationId: app.controllers.billing_controller.get_billing_payment_methods
      summary: List Payment Methods
      description: List all payment methods present on the account
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: include_token
          schema:
            type: boolean
            description: Include the token used at the payment gateway in the response
            example: false
            default: false
          required: false
        - in: query
          name: active
          schema:
            type: boolean
            description: Include only an active payment method
            example: false
            default: false
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingPaymentMethodsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.billing_controller.post_billing_payment_methods
      summary: Add Credit Card
      description: Allows one to add a credit card as a payment method. PayPal must be added as a payment method on a specific Invoice
      tags:
        - Billing
      security:
        - bearerAuth: []
      requestBody:
        description: Credit Card information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBillingPaymentMethodRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingPaymentMethodResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/payment_methods/{payment_method_id}:
    get:
      operationId: app.controllers.billing_controller.get_billing_payment_methods_method_id
      summary: Get Payment Method
      description: Get details about a specific payment method
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: payment_method_id
          schema:
            type: integer
          required: true
        - in: query
          name: include_token
          schema:
            type: boolean
            description: Include the token used at the payment gateway in the response
            example: false
            default: false
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingPaymentMethodResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.billing_controller.delete_billing_payment_methods_method_id
      summary: Delete Payment Method
      description: Removes a payment method from the account
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: payment_method_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.billing_controller.patch_billing_payment_methods_method_id
      summary: Update Payment Method
      description: 'NOTE: Only credit cards can be updated this way. PayPal subscriptions will need to be cancelled at PayPal and a new subscription can be applied to an open invoice'
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: payment_method_id
          schema:
            type: integer
          required: true
      requestBody:
        description: Create a Payment Method
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBillingPayMethodRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingPaymentMethodResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/payment_methods/credit_card_setup_intent:
    post:
      operationId: app.controllers.billing_controller.post_billing_payment_methods_credit_card_setup_intent
      summary: Create Credit Card Setup Intent
      description: Create a Stripe Setup Intent for a Payment Method
      tags:
        - Billing
      security:
        - bearerAuth: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBillingCreditCardSetupIntentResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/billing/products:
    get:
      operationId: app.controllers.billing_controller.get_billing_products
      summary: List Available Products
      description: Provides a list of available hosting plan products. Addons are not listed and must be added manually
      tags:
        - Billing
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: coupon
          schema:
            type: string
            description: Apply a coupon to the product results
          required: false
        - in: query
          name: product_id
          schema:
            type: integer
            description: Filter to a specific product id
          required: false
        - in: query
          name: type
          schema:
            type: string
            description: Filter by product type
            enum:
              - Managed
              - Agency
              - Enterprise
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingProductsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/login:
    post:
      operationId: app.controllers.authentication_controller.login_post
      summary: Authenticate user and generate JWT token
      description: Use this route to request an API token that can be used for requests. Token expires in 7 days. Should you get a 401 back, from the API, request a new token.
      requestBody:
        description: Username and password to authenticate user
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
      tags:
        - Authentication
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '400':
          description: Invalid or missing request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Unable to authenticate
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/cdn/requests:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_cdn_requests_get
      summary: Retrieve CDN requests report
      description: Show traffic to your site from the edge (including cache hits)
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
        - in: query
          name: req_type
          schema:
            type: string
            description: Filter to a specific type of requests (edgeOrigin = requests that hit the origin)
            example: edgeOrigin
            enum:
              - edgeOrigin
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/CDNRequestsResponse'
                  - $ref: '#/components/schemas/CDNRequestsResponseEdgeOrigin'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/cdn/cache-status:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_cdn_cache_status_get
      summary: Retrieve CDN cache-status report
      description: Show stats on cache hits (and details on what was hit vs miss vs expired) as well as requests that bypass the cache (dynamic, etc)
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CDNCacheStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/cdn/cache-content:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_cdn_cache_content_get
      summary: Retrieve CDN cache-content report.
      description: For given site it checks cloudflare stats to get CDN cache content data and returns it.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CDNCacheContentResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/cdn/cache-top:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_cdn_cache_top_get
      summary: '[Deprecated] Retrieve cdn cache-top report.'
      description: Use /sites/{id}/reporting/cdn/request_volume_by_source instead
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CDNCacheTopResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/visitors:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_visitors_get
      summary: Retrieve cdn visitors report.
      description: For given site it checks cloudflare stats to get CDN visitors data and returns it.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CDNVisitorsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/waf/eventlist:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_waf_eventlist_get
      summary: List WAF Events
      description: Lists all requests which triggered actions in the Web Application Firewall (WAF)
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
        - in: query
          name: search
          schema:
            description: Search for an event by action, client_ip, country, request_path, user_agent, or query_string
            type: string
            example: /admin-ajax.php
        - in: query
          name: action
          description: Filter events matching a specific action taken by the WAF
          style: form
          schema:
            type: array
            example:
              - allow
            items:
              type: string
              enum:
                - allow
                - block
                - bypass
                - challenge
                - jschallenge
                - managed_challenge
                - skip
          required: false
        - in: query
          name: client_ip
          description: Filter events matching a specific IP address
          schema:
            type: string
            example: 1.2.3.4
          required: false
        - in: query
          name: request_path
          description: Filter events matching a specific request path or partial path
          schema:
            type: string
            example: /wp-login.php
          required: false
        - in: query
          name: country
          description: Filter events matching a specific country
          schema:
            type: array
            example:
              - US
            items:
              type: string
          required: false
        - in: query
          name: asn
          description: Filter events matching a specific ASN
          schema:
            type: string
            example: '14618'
          required: false
        - in: query
          name: asn_description
          description: Filter events matching a specific or partial ASN description
          schema:
            type: string
            example: AMAZON-AES
          required: false
        - in: query
          name: http_method
          description: Filter events matching a specific HTTP method
          schema:
            type: array
            example:
              - POST
            items:
              type: string
              enum:
                - GET
                - DELETE
                - HEAD
                - OPTIONS
                - PATCH
                - PUT
                - POST
          required: false
        - in: query
          name: http_protocol
          description: Filter events matching a specific or partial HTTP Protocol
          schema:
            type: string
            example: HTTP/1.1
          required: false
        - in: query
          name: query_string
          description: Filter events matching a specific or partial Query String
          schema:
            type: string
            example: '&bad=request'
          required: false
        - in: query
          name: ray_id
          description: Filter events matching a specific or partial Ray ID
          schema:
            type: string
            example: '1234567890'
          required: false
        - in: query
          name: user_agent
          description: Filter events matching a specific or partial HTTP User Agent
          schema:
            type: string
            example: Mozilla/5.0
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListWAFEventsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/waf/events-source:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_waf_events_source_get
      summary: Retrieve WAF events source report.
      description: For given site it checks cloudflare stats to get WAF events source data and returns it.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WAFFirewallEventsSourceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/waf/firewall-events:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_waf_firewall_events_get
      summary: Retrieve WAF firewall events report.
      description: For given site it checks cloudflare stats to get WAF firewall events data and returns it.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WAFFirewallEventsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/waf/events-services:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_waf_events_services_get
      summary: Retrieve WAF events services report.
      description: For given site it checks cloudflare stats to get WAF events services data and returns it.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WAFEventsServicesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/waf/events-time:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_waf_events_time_get
      summary: Retrieve WAF events time report.
      description: For given site it checks cloudflare stats to get WAF events time data and returns it.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WAFEventsTimeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/waf/events:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_waf_events_get_deprecated
      summary: '[Deprecated]: List WAF Events'
      description: Use /reporting/sites/{id}/waf/eventlist instead
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
        - in: query
          name: limit
          schema:
            description: Number of events to provide back
            type: integer
        - in: query
          name: search
          schema:
            description: Search for an event by action, client_ip, country, request_path, user_agent, or query_string
            type: string
            example: /admin-ajax.php
        - in: query
          name: action
          description: Filter events matching a specific action taken by the WAF
          style: form
          schema:
            type: array
            example:
              - allow
            items:
              type: string
              enum:
                - allow
                - block
                - bypass
                - challenge
                - jschallenge
                - managed_challenge
                - skip
          required: false
        - in: query
          name: client_ip
          description: Filter events matching a specific IP address
          schema:
            type: string
            example: 1.2.3.4
          required: false
        - in: query
          name: request_path
          description: Filter events matching a specific request path or partial path
          schema:
            type: string
            example: /wp-login.php
          required: false
        - in: query
          name: country
          description: Filter events matching a specific country
          schema:
            type: array
            example:
              - US
            items:
              type: string
          required: false
        - in: query
          name: asn
          description: Filter events matching a specific ASN
          schema:
            type: string
            example: '14618'
          required: false
        - in: query
          name: asn_description
          description: Filter events matching a specific or partial ASN description
          schema:
            type: string
            example: AMAZON-AES
          required: false
        - in: query
          name: http_method
          description: Filter events matching a specific HTTP method
          schema:
            type: array
            example:
              - POST
            items:
              type: string
              enum:
                - GET
                - DELETE
                - HEAD
                - OPTIONS
                - PATCH
                - PUT
                - POST
          required: false
        - in: query
          name: http_protocol
          description: Filter events matching a specific or partial HTTP Protocol
          schema:
            type: string
            example: HTTP/1.1
          required: false
        - in: query
          name: query_string
          description: Filter events matching a specific or partial Query String
          schema:
            type: string
            example: '&bad=request'
          required: false
        - in: query
          name: user_agent
          description: Filter events matching a specific or partial HTTP User Agent
          schema:
            type: string
            example: Mozilla/5.0
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WAFEventsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/bandwidth/top-usage:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_bandwidth_top_usage_get
      summary: Get top usage bandwidth report.
      description: For given site it checks cloudflare stats for bandwidth top users.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BandwidthTopUsageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/reporting/sites/{id}/bandwidth/usage:
    get:
      operationId: app.controllers.reporting_controller.reporting_sites_id_bandwidth_usage_get
      summary: Get usage bandwidth report.
      description: For given site it checks cloudflare stats for usage histogram.
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BandwidthUsageReportingResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/site_templates:
    post:
      operationId: app.controllers.site_templates_controller.site_templates_task_post
      summary: Create new site template
      description: Kicks off the creation of a task to create a new site template from a site
      tags:
        - Site Templates
      security:
        - bearerAuth: []
      requestBody:
        description: New site template parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSiteTemplateRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites:
    get:
      operationId: app.controllers.sites_controller.sites_get
      summary: List sites
      description: Get list of all sites and their details for given user, can be filtered by domain.
      security:
        - bearerAuth: []
      tags:
        - Sites
      parameters:
        - in: query
          name: domain
          schema:
            $ref: '#/components/schemas/SearchParamDomain'
          required: false
        - in: query
          name: search
          schema:
            type: string
            description: Search for a site by its domain, label, or ID
            example: rocket
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - created_at
              - domain
              - label
              - disk_usage
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSitesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.sites_controller.sites_post
      summary: Create new site
      description: Endpoint that can be used to create a new site.
      tags:
        - Sites
      security:
        - bearerAuth: []
      requestBody:
        description: New site parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSiteRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSiteResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}:
    get:
      operationId: app.controllers.sites_controller.sites_id_get
      summary: Get information about site from system
      description: Returns details about site if user has permissions and if site exists.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.sites_controller.sites_id_delete
      summary: Delete site from system
      description: Removes site from database, removes cloudflare entry and removes cpanel account
      security:
        - bearerAuth: []
      tags:
        - Sites
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.sites_controller.sites_id_patch
      summary: Update site properties.
      description: Endpoint that can be used to change limited site properties, like label.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Updated site settings
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSiteRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/access_logs:
    get:
      operationId: app.controllers.access_logs_controller.sites_id_access_logs_get
      summary: List Access Logs
      description: List and search access logs for the Site
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
        - in: query
          name: domain
          schema:
            type: string
            description: Domain that received the request, if not provided, returns logs aggregated from all valid domains
            example: rocket.net
          required: false
        - in: query
          name: search
          description: Search across RayID, IP, URI, and timestamp. All fields allow partial prefix matches. URI supports up to 2 wildcards using *. Dates should be provided in YYYY-MM-DD format. All other date formats will be 'best effort' matching
          schema:
            type: string
            example: wp-admin/*.php
          required: false
        - in: query
          name: ip
          schema:
            $ref: '#/components/schemas/IP'
          required: false
        - in: query
          name: cache_status
          schema:
            $ref: '#/components/schemas/CacheStatus'
          required: false
        - in: query
          name: uri
          schema:
            $ref: '#/components/schemas/URI'
          required: false
        - in: query
          name: ray_id
          schema:
            $ref: '#/components/schemas/RayID'
          required: false
        - in: query
          name: device_type
          schema:
            $ref: '#/components/schemas/DeviceType'
          required: false
        - in: query
          name: status_code
          schema:
            type: string
            description: HTTP Status Code of the Request
            example: '200'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccessLogsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/access-logs:
    get:
      operationId: app.controllers.access_logs_controller.sites_id_access_logs_get_deprecated
      summary: '[Deprecated] List Access Logs'
      description: '[Deprecated] Use /sites/{id}/access_logs instead'
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDurationInt'
          required: true
        - in: query
          name: domain
          schema:
            type: string
            description: Domain that received the request
            example: rocket.net
          required: true
        - in: query
          name: ip
          schema:
            $ref: '#/components/schemas/IP'
          required: false
        - in: query
          name: cache_status
          schema:
            $ref: '#/components/schemas/CacheStatus'
          required: false
        - in: query
          name: uri
          schema:
            $ref: '#/components/schemas/URI'
          required: false
        - in: query
          name: ray_id
          schema:
            $ref: '#/components/schemas/RayID'
          required: false
        - in: query
          name: device_type
          schema:
            $ref: '#/components/schemas/DeviceType'
          required: false
        - in: query
          name: status_code
          schema:
            type: string
            description: HTTP Status Code of the Request
            example: '200'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccessLogsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/access_token:
    post:
      operationId: app.controllers.sites_controller.sites_id_access_token_post
      summary: Generate token valid for accessing site operations
      description: For given site it returns valid JWT token that can be used for basic site operations
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Access token options.
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SiteAccessTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteAccessTokenResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/activity/disable:
    post:
      operationId: app.controllers.activity_controller.sites_id_activity_disable_post
      summary: Stops events logging.
      description: Stops events logging by removing plugin from cpanel.
      tags:
        - Activity
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/activity/enable:
    post:
      operationId: app.controllers.activity_controller.sites_id_activity_enable_post
      summary: Starts events logging.
      description: Starts events logging by adding plugin to cpanel.
      tags:
        - Activity
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/activity/events:
    post:
      operationId: app.controllers.activity_controller.sites_id_activity_events_post
      summary: Insert new event into system.
      description: Adds existing event to system
      tags:
        - Activity
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      security:
        - bearerAuth: []
      requestBody:
        description: Add an event.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEventRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: app.controllers.activity_controller.sites_id_activity_events_get
      summary: List Activity Events
      description: List and Search events that took place on the site
      tags:
        - Activity
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: author
          schema:
            type: string
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: date_from
          schema:
            $ref: '#/components/schemas/DateFrom'
          required: false
        - in: query
          name: date_to
          schema:
            $ref: '#/components/schemas/DateTo'
          required: false
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: false
        - in: query
          name: ip
          schema:
            type: string
          required: false
        - in: query
          name: event_type
          schema:
            type: string
          required: false
        - in: query
          name: action
          schema:
            type: string
          required: false
        - in: query
          name: display_name
          schema:
            type: string
          required: false
        - in: query
          name: user_email
          schema:
            type: string
          required: false
        - in: query
          name: user_login
          schema:
            type: string
          required: false
        - in: query
          name: label
          schema:
            type: string
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEventsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/activity/events/{event_id}:
    get:
      operationId: app.controllers.activity_controller.sites_id_activity_events_event_id_get
      summary: Get event for a site installation with event id.
      description: For a given site, try to get event with given id.
      tags:
        - Activity
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: event_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.activity_controller.sites_id_activity_events_event_id_delete
      summary: Delete event from a site installation.
      description: For a given site, deletes event with given id.
      tags:
        - Activity
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: event_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/all_locations:
    get:
      operationId: app.controllers.sites_controller.sites_all_locations_get
      summary: List Site locations (including restricted)
      description: List all available locations for new sites including those which are restricted to your account only.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: site_type
          description: Filter by site type(s) the location supports
          schema:
            type: integer
            enum:
              - 0
              - 1
              - 2
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAllLocationsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup:
    post:
      operationId: app.controllers.backups_controller.sites_id_backup_post
      summary: Create a new backup for given site.
      description: For a given site create a new backup.
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Create backup for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBackupRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: app.controllers.backups_controller.sites_id_backup_get
      summary: Get a list of backups for site
      description: For a given site list all manually created backups
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: task_id
          description: Filter results by task_id (cannot be combined with other filters)
          schema:
            type: string
          required: false
        - in: query
          name: search
          description: Filter results by backup label
          schema:
            type: string
          required: false
        - in: query
          name: status
          schema:
            type: string
            description: One or more statuses to filter by. If more than one status, use a comma-separated list
            example: DONE,RESTORING
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          description: How many results to include in each page
          schema:
            type: integer
            default: 100
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: Sort results by the following property
            enum:
              - created_at
              - id
              - label
              - status
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBackupResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup/{backup_id}:
    get:
      operationId: app.controllers.backups_controller.sites_id_backup_backup_id_get
      summary: Download given backup for site
      description: For a given site download generated backup file for a given backup id.
      tags:
        - Backups
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: integer
          required: true
        - in: query
          name: token
          schema:
            type: string
            description: Token which is part of `download_link` from list backups API call
          required: true
      responses:
        '200':
          description: OK
          headers:
            Content-Disposition:
              schema:
                type: string
              example: attachment; filename="backup.tar.gz"
              description: Content-Disposition header value
            Content-Length:
              schema:
                type: integer
              example: 1024
              description: Content-Length header value
            Content-Type:
              schema:
                type: string
              example: application/gzip
              description: Content-Type header value
          content:
            application/gzip:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '410':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.backups_controller.sites_id_backup_backup_id_delete
      summary: Delete given backup for site from the system.
      description: For a given site delete backup with given backup id.
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup/{backup_id}/restore:
    post:
      operationId: app.controllers.backups_controller.sites_id_backup_backup_id_restore_post
      summary: Restore a backup for given site (via background task)
      description: For a given backup_id restore site with given site id.
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: integer
          required: true
      requestBody:
        description: Restore backup for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreBackupRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup/automated:
    get:
      operationId: app.controllers.backups_controller.sites_id_backup_automated_get
      summary: List automated backups
      description: List automated backup recovery points from the system
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Searches for backups with created_at matching this string
            example: ''
          required: false
        - in: query
          name: status
          schema:
            $ref: '#/components/schemas/AutomatedBackupStatus'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          description: How many results to include in each page
          schema:
            type: integer
            default: 100
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: Sort results by the following property
            enum:
              - created_at
              - status
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAutomatedBackupResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup/automated/{restore_id}/restore:
    post:
      operationId: app.controllers.backups_controller.sites_id_backup_automated_restore_id_restore_post
      summary: Restore existing automated restore point (via background task)
      description: Restore given restore point for given site
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: restore_id
          schema:
            $ref: '#/components/schemas/RecoveryPoint'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup/automated/{restore_id}/restore/database:
    post:
      operationId: app.controllers.backups_controller.sites_id_backup_automated_restore_id_restore_database_post
      summary: Restore existing automated restore point database
      description: Restore given restore point database for given site
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: restore_id
          schema:
            $ref: '#/components/schemas/RecoveryPoint'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/backup/automated/{restore_id}/restore/files:
    post:
      operationId: app.controllers.backups_controller.sites_id_backup_automated_restore_id_restore_files_post
      summary: Restore existing automated restore point files
      description: Restore given restore point files for given site
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: restore_id
          schema:
            $ref: '#/components/schemas/RecoveryPoint'
          required: true
      requestBody:
        description: Restore files options
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreAutomatedBackupFilesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cache/purge:
    post:
      operationId: app.controllers.cdn_cache_controller.sites_id_cache_purge_post
      summary: Purge files from cache on cloudflare
      description: Endpoint that can be used to purge individual files for one site from cloudflare cache.
      tags:
        - CDN Cache
      security:
        - bearerAuth: []
      requestBody:
        description: Purge cache list of files
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurgeCacheRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: staging
          schema:
            type: boolean
        - in: query
          name: domain
          schema:
            type: string
        - in: query
          name: include_additional_domains
          description: Also purge any additional domains for the site
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurgeCacheResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cache/purge_everything:
    post:
      operationId: app.controllers.cdn_cache_controller.sites_id_cache_purge_everything_post
      summary: Purge all files from single domain from cache on cloudflare
      description: Endpoint that can be used to purge ALL files for one site from cloudflare cache.
      tags:
        - CDN Cache
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: staging
          schema:
            type: boolean
        - in: query
          name: domain
          schema:
            type: string
        - in: query
          name: include_additional_domains
          description: Also purge any additional domains for the site
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurgeCacheResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cli:
    post:
      operationId: app.controllers.wordpress_controller.sites_id_cli_post
      summary: Execute cli command on wp installation ([Deprecated])
      description: '[Deprecated]: Use /sites/{id}/wpcli instead.'
      tags:
        - WordPress
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: ExecuteCli.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteCliRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecuteCliResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/clone:
    post:
      operationId: app.controllers.sites_controller.sites_id_clone_post
      summary: Clone a site (via background task)
      description: Creates a new site using all the contents, plugins, themes, etc from an existing site. The site's URL will be a new temporary URL
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            type: integer
          required: true
      requestBody:
        description: New site parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneSiteRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cloud_backups:
    get:
      operationId: app.controllers.cloud_backups_controller.sites_id_cloud_backups_get
      summary: List cloud backups
      description: List cloud backups for given site
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Searches for backups with properties matching this string
            example: WooCommerce Upgrade
          required: false
        - in: query
          name: status
          schema:
            $ref: '#/components/schemas/BackupStatus'
          required: false
        - in: query
          name: task_id
          schema:
            $ref: '#/components/schemas/TaskID'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          description: How many results to include in each page
          schema:
            type: integer
            default: 100
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: Sort results by the following property
            default: id
            enum:
              - created_at
              - status
              - id
              - label
              - task_id
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCloudBackupsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.cloud_backups_controller.sites_id_cloud_backups_post
      summary: Create a new cloud backup
      description: Create a new cloud backup of the users' files and/or database for a given site (staging sites will only backup the staging webroot) - Via A Task
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Create backup for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCloudBackupRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCloudBackupResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given backup not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cloud_backups/{backup_id}:
    get:
      operationId: app.controllers.cloud_backups_controller.sites_id_cloud_backups_backup_id_get
      summary: Get a cloud backup
      description: Get a cloud backup for a given backup id
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCloudBackupResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given backup not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.cloud_backups_controller.sites_id_cloud_backups_backup_id_delete
      summary: Delete a cloud backup
      description: Delete a cloud backup for a given backup id
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCloudBackupResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given backup not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cloud_backups/{backup_id}/download:
    get:
      operationId: app.controllers.cloud_backups_controller.sites_id_cloud_backups_backup_id_download_get
      summary: Get Cloud Backup Download Link
      description: Get a download link for a cloud backup for a given backup id
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadCloudBackupResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given backup not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/cloud_backups/{backup_id}/restore:
    post:
      operationId: app.controllers.cloud_backups_controller.sites_id_cloud_backups_backup_id_restore_post
      summary: Restore cloud backup / Create new site from backup
      description: Restore a cloud backup to an existing site or create a new site from the backup - Via A Task
      tags:
        - Backups
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: backup_id
          schema:
            type: string
          required: true
      requestBody:
        description: Restore backup for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreCloudBackupRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given backup not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/credentials:
    get:
      operationId: app.controllers.sites_controller.sites_id_credentials_get
      summary: Get password and username for site.
      description: Returns credentials for site wordpress installations.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteCredentialsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/domains:
    get:
      operationId: app.controllers.domains_controller.sites_id_domains_get
      summary: List additional domains (aliases) for the site
      description: Get additional domains for given site
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Search for a domain by its name
            example: reallyawesomewebsite.co.uk
          required: false
        - in: query
          name: page
          description: Page of results to include
          schema:
            type: integer
            default: 1
          required: false
        - in: query
          name: per_page
          description: How many results to include in each page
          schema:
            type: integer
            default: 100
          required: false
        - in: query
          name: sort
          description: property to sort the results by
          schema:
            type: string
            example: ssl_status
            enum:
              - domain
              - domain_type
              - hostname_status
              - ssl_status
              - validation_method
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetDomainAliasesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.domains_controller.sites_id_domains_post
      summary: Create additional domain (domain alias).
      description: Add an additional domain (domain alias) which will also point to the WordPress install (for use with multi-site or custom multi-domain installs)
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAdditionalDomainRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainAliasResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/domains/{domain_id}:
    delete:
      operationId: app.controllers.domains_controller.sites_id_domains_domain_id_delete
      summary: Delete additional domain (domain alias)
      description: Removes additional domain (domain alias) for selected site.
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: domain_id
          schema:
            type: integer
            description: ID of the additional domain to delete
            example: 5
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringSuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/domains/{domain_id}/edge_settings:
    get:
      operationId: app.controllers.domains_controller.sites_id_domains_domain_id_edge_settings_get
      summary: Get additional domain (domain alias) Edge Settings
      description: Gets the additional domain (domain alias)'s Edge Settings such as managed challenge, etc.
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: domain_id
          schema:
            type: integer
            description: ID of the additional domain to get edge settings for
            example: 5
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeSettingsResponse'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.domains_controller.sites_id_domains_domain_id_edge_settings_patch
      summary: Update additional domain (domain alias) Edge Settings
      description: Updates the additional domain (domain alias)'s Edge Settings such as managed challenge, etc.
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        description: Updated Additional Domain Edge Settings
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchEdgeSettingsRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: domain_id
          schema:
            type: integer
            description: ID of the additional domain to update edge settings for
            example: 5
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeSettingsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/featured_plugins:
    get:
      operationId: app.controllers.plugins_controller.sites_id_featured_plugins_get
      summary: List available featured plugins
      description: Get list of available featured plugins and if they are installed
      tags:
        - Plugins
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListFeaturedPluginsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/file_manager/files:
    get:
      operationId: app.controllers.files_controller.sites_id_file_manager_files_get
      summary: List Site Files
      description: List all files/directories in a specific directory
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          description: site id
          schema:
            type: integer
          required: true
        - in: query
          name: path
          description: Path to list files/directories under - relative to the document root of the site
          example: wp-content
          schema:
            type: string
          required: false
        - in: query
          name: search
          description: Search for files/directories matching this string
          example: .php
          schema:
            type: string
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: true
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: true
        - in: query
          name: sort
          description: Property of the file to sort by
          schema:
            type: string
            default: name
            enum:
              - created_at
              - ctime
              - mtime
              - name
              - size
              - type
              - updated_at
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListFileManagerFilesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files:
    get:
      operationId: app.controllers.files_controller.sites_id_files_get
      summary: '[Deprecated] List files in a site installation.'
      description: '[Deprecated] - Use ''List Site Files''  (/v1/sites/:id/file_manager/files) instead'
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: path
          schema:
            type: string
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListFilesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.files_controller.sites_id_files_post
      summary: Upload a file to the site installation.
      description: For a given site, upload a new file to the site installation.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Upload a new file.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadFileRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: app.controllers.files_controller.sites_id_files_put
      summary: Save contents of a file to the site installation.
      description: For a given site, save new content to existing file in the site installation.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Upload a new file.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveFileRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.files_controller.sites_id_files_delete
      summary: Delete file from a site installation.
      description: For a given site, deletes .
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Extract file request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteFileRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files/extract:
    post:
      operationId: app.controllers.files_controller.sites_id_files_extract_post
      summary: Extract a file.
      description: For a given site, extract a given file.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Extract file request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtractFileRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files/compress:
    post:
      operationId: app.controllers.files_controller.sites_id_files_compress_post
      summary: Compress files or folders.
      description: For a given site, compress a given files or folders.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Extract file request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompressFilesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files/chmod:
    patch:
      operationId: app.controllers.files_controller.sites_id_files_chmod_patch
      summary: Change file permissions.
      description: For a given site, change permissions for given file.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Change file permissions request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePermissionsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files/download:
    get:
      operationId: app.controllers.files_controller.sites_id_files_download_get
      summary: Download contents of a given file.
      description: For a given file on a site, retrieve and save contents of file.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: filename
          schema:
            type: string
          required: true
        - in: query
          name: directory
          schema:
            type: string
          required: false
      responses:
        '200':
          description: OK
          headers:
            Content-Disposition:
              schema:
                type: string
              example: index.php
              description: Content-Disposition header value
            Content-Type:
              schema:
                type: string
              example: application/gzip
              description: Content-Type header value
          content:
            application/gzip:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files/folder:
    post:
      operationId: app.controllers.files_controller.sites_id_files_folder_post
      summary: Create folder in a site installation.
      description: For a given site, create a new folder in a site installation.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Create a new folder.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFolderRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PathResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/files/view:
    get:
      operationId: app.controllers.files_controller.sites_id_files_view_get
      summary: View contents of a given file.
      description: For a given file on a site, retrieve contents of file.
      tags:
        - Files
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: filename
          schema:
            type: string
          required: true
        - in: query
          name: directory
          schema:
            type: string
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewFileResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ftp/accounts:
    get:
      operationId: app.controllers.ftp_accounts_controller.sites_id_ftp_accounts_get
      summary: List Ftp Accounts
      description: Get list of ftp accounts associated with given site, can be filtered by ftp username.
      tags:
        - FTP Accounts
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: username
          schema:
            type: string
            description: Search for usernames matching this string
            example: ammar
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: sort
          description: sort results by this property (omit for sort by user)
          schema:
            type: string
            enum:
              - dir
              - diskquota
              - diskused
              - reldir
              - user
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListFtpAccountsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.ftp_accounts_controller.sites_id_ftp_accounts_post
      summary: Create new ftp account
      description: Endpoint that can be used to create a new ftp account for given site.
      tags:
        - FTP Accounts
      security:
        - bearerAuth: []
      requestBody:
        description: New ftp account parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFtpAccountRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateFtpAccountResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.ftp_accounts_controller.sites_id_ftp_accounts_patch
      summary: Update ftp account
      description: Updates ftp account for given username
      tags:
        - FTP Accounts
      security:
        - bearerAuth: []
      requestBody:
        description: Updated ftp account parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFtpAccountRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: username
          schema:
            $ref: '#/components/schemas/FTPUser'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateFtpAccountResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.ftp_accounts_controller.sites_id_ftp_accounts_delete
      summary: Delete ftp account
      description: Removes ftp account from selected site
      tags:
        - FTP Accounts
      security:
        - bearerAuth: []
      requestBody:
        description: Ftp account parameters for deletion
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteFtpAccountRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteFtpAccountResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/locations:
    get:
      operationId: app.controllers.sites_controller.sites_locations_get
      summary: List Site locations
      description: List all available locations for new sites.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: site_type
          description: Filter by site type(s) the location supports
          schema:
            type: integer
            enum:
              - 0
              - 1
              - 2
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLocationsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/lock:
    post:
      operationId: app.controllers.sites_controller.sites_id_lock_post
      summary: Lock a site so that no modifications can be made
      description: 'This will lock a site so that no modifications can be made to it. WARNING: This locks new database entries and will prevent e-commerce orders, comments, posts, etc. This is intended to be used for static sites or sites with security issues that are being fixed.'
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.sites_controller.sites_id_lock_delete
      summary: Unlock a site so that modifications can be made again
      description: This will unlock a site which is currently locked
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/maindomain:
    get:
      operationId: app.controllers.domains_controller.sites_id_maindomain_get
      summary: Get site main domain info
      description: Get main domain details for a given site
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MainDomainResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.domains_controller.sites_id_maindomain_post
      summary: Set a domain for a Site
      description: This can only be done on sites that are not staging sites. Once this is done, you must use PUT to change the maindomain
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        description: Initial main domain information.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetMainDomainRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MainDomainResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.domains_controller.sites_id_maindomain_patch
      summary: Update maindomain validation method or SSL CA
      description: Allows for changing between DNS and HTTP validation for domain ownership, or updating the CA used for SSL for the maindomain
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        description: Updated validation method or SSL CA.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchMainDomainRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchMainDomainResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: app.controllers.domains_controller.sites_id_maindomain_put
      summary: Replace current maindomain with different one
      description: Updates the site's domain name
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        description: New maindomain.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutMainDomainRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MainDomainResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/maindomain/edge_settings:
    get:
      operationId: app.controllers.domains_controller.sites_id_maindomain_edge_settings_get
      summary: Get Maindomain Edge Settings
      description: Gets the site's Edge Settings such as managed challenge, etc.
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeSettingsResponse'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.domains_controller.sites_id_maindomain_edge_settings_patch
      summary: Update Maindomain Edge Settings
      description: Updates the site's Edge Settings such as managed challenge, etc.
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        description: Updated MaindomainEdge Settings
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchEdgeSettingsRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeSettingsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/maindomain/prefix:
    patch:
      operationId: app.controllers.domains_controller.sites_id_maindomain_prefix_patch
      summary: Change existing prefix for domain
      description: Attempt to change existing domain with existing www. prefix to the one without, or vice-versa.
      tags:
        - Domains
      security:
        - bearerAuth: []
      requestBody:
        description: Change domain prefix.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchMainDomainPrefixRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/maindomain/recheck:
    get:
      operationId: app.controllers.domains_controller.sites_id_maindomain_recheck_get
      summary: Force validation status recheck
      description: Forces a re-check of the domain's DNS records or HTTP responses for SSL and hostname validation
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: force
          schema:
            type: boolean
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/maindomain/status:
    get:
      operationId: app.controllers.domains_controller.sites_id_maindomain_status_get
      summary: Checks the status of the maindomain, any alternate maindomains, and additional domains
      description: Checks the status of the maindomain, any alternate maindomains, and additional domains
      tags:
        - Domains
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MainDomainStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/pma/login:
    get:
      operationId: app.controllers.sites_controller.sites_id_pma_login_get
      summary: Get SSO link for phpMyAdmin account
      description: For given site it returns valid SSO link that someone can use to sign in phpMyAdmin account
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PMALoginResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/password_protection:
    get:
      operationId: app.controllers.password_protection_controller.sites_id_password_protection_get
      summary: Get site password protection status.
      description: Check if a site is password protected
      tags:
        - Password Protection
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPasswordProtectionResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.password_protection_controller.sites_id_password_protection_post
      summary: Enable site password protection.
      description: Enable password protection for a site
      tags:
        - Password Protection
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.password_protection_controller.sites_id_password_protection_delete
      summary: Disable site password protection.
      description: Disable password protection for a site
      tags:
        - Password Protection
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/password_protection/users:
    get:
      operationId: app.controllers.password_protection_controller.sites_id_password_protection_users_get
      summary: List site password protection users
      description: List users who can access the site with a password while it is password protected
      tags:
        - Password Protection
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            type: integer
            description: Results per page
            example: 10
            default: 100
          required: false
        - in: query
          name: search
          schema:
            type: string
            description: search for username matching this string
            example: secret
        - in: query
          name: sort
          description: property to sort the results by
          schema:
            type: string
            example: username
            enum:
              - username
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPasswordProtectionUsersResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.password_protection_controller.sites_id_password_protection_users_post
      summary: Add site password protection user.
      description: Adds a user who can access the site while it is password protected
      tags:
        - Password Protection
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddPasswordProtectionUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddPasswordProtectionUserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/password_protection/users/{user_id}:
    delete:
      operationId: app.controllers.password_protection_controller.sites_id_password_protection_users_user_id_delete
      summary: Remove site password protection user.
      description: Removes a user who can access the site while password protected
      tags:
        - Password Protection
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: user_id
          schema:
            description: ID of the password protection user to delete
            example: 9
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/plugins:
    get:
      operationId: app.controllers.plugins_controller.sites_id_plugins_get
      summary: List installed WordPress plugins on account
      description: Get list of WordPress plugins currently installed on given site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Search plugin name/title
            example: All-in-One
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            type: integer
            description: Number of results per page
            example: 10
            default: 500
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: sort results by this property
            enum:
              - name
              - status
              - title
              - update
              - version
            default: title
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPluginsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.plugins_controller.sites_id_plugins_post
      summary: Install new WordPress plugins to site
      description: Endpoint that can be used to install one or more WordPress plugins for given site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallPluginsRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstallPluginsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.plugins_controller.sites_id_plugins_patch
      summary: Activate or deactivate WordPress plugins on given site
      description: Endpoint that can be used to either activate or deactivate already installed plugin on given site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      requestBody:
        description: Plugin to be activated or deactivated
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePluginStatusPluginRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangePluginStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: app.controllers.plugins_controller.sites_id_plugins_put
      summary: Update WordPress plugins on given site
      description: Endpoint that can be used to update already installed plugin to a newer version on given site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      requestBody:
        description: Plugin to be updated.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePluginRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatePluginResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.plugins_controller.sites_id_plugins_delete
      summary: Delete WordPress plugins from given site
      description: Endpoint that can be to remove installed plugin from given site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      requestBody:
        description: Plugin to be deleted.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeletePluginRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletePluginResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/plugins/rocket/cdn_cache_management:
    post:
      operationId: app.controllers.plugins_controller.sites_id_plugins_rocket_cdn_cache_management_post
      summary: Install / re-install the Rocket CDN Cache Management plugin
      description: Install / re-install the Rocket CDN Cache Management plugin on the site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/plugins/search:
    get:
      operationId: app.controllers.plugins_controller.sites_id_plugins_search_get
      summary: Search for WordPress plugins that can be installed
      description: Get list of WordPress plugins that can be installed to site.
      tags:
        - Plugins
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: query
          schema:
            description: Search terms
            type: string
            example: akis
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            description: How many results to include in each page
            type: integer
            default: 10
        - in: query
          name: browse
          schema:
            description: response ordering. Leave off for default order
            type: string
            enum:
              - new
              - popular
              - top-rated
              - updated
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchPluginsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/reporting/bandwidth:
    get:
      operationId: app.controllers.bandwidth_controller.sites_id_reporting_bandwidth_get
      summary: Get bandwidth usage statistics for given site.
      description: For given site get list of bandwidth usage per day.
      tags:
        - Bandwidth
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: date_from
          schema:
            $ref: '#/components/schemas/DateFrom'
          required: false
        - in: query
          name: date_to
          schema:
            $ref: '#/components/schemas/DateTo'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BandwidthUsageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/reporting/bandwidth/usage:
    get:
      operationId: app.controllers.reporting_controller.sites_id_reporting_bandwidth_usage_get
      summary: Get usage bandwidth report.
      description: For given site it checks cloudflare stats for usage histogram.
      tags:
        - Bandwidth
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BandwidthUsageReportingResponseObj'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/reporting/cdn_request_volume_by_source:
    get:
      operationId: app.controllers.reporting_controller.sites_id_reporting_cdn_request_volume_by_source_get
      summary: CDN Request Volume by Source
      description: Shows a summary of request volume by various request characteristics
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CDNRequestVolumeBySourceResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/reporting/total_requests:
    get:
      operationId: app.controllers.reporting_controller.sites_id_reporting_total_requests_get
      summary: Total requests from all sources
      description: Shows all sources of requests to the site
      tags:
        - Reporting
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: duration
          schema:
            $ref: '#/components/schemas/ReportingDuration'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TotalRequestsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/settings:
    get:
      operationId: app.controllers.site_settings_controller.sites_id_settings_get
      summary: Get site settings.
      description: For given site it returns all settings found on sites cpanel that user can modify.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteSettingsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.site_settings_controller.sites_id_settings_patch
      summary: Update site settings.
      description: For given site change settings on cpanel that user can modify.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Site's Settings
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSettingsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteSettingsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/settings/schema:
    get:
      operationId: app.controllers.site_settings_controller.sites_id_settings_schema_get
      summary: Get schema of all possible settings for the site.
      description: For given site it returns schema of all possible settings for the site.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsSchemaResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/shop_shield:
    get:
      operationId: app.controllers.shop_shield_controller.sites_id_shopshield_get
      summary: List ShopShield URIs for a site
      description: List ShopShield URIs for a site
      security:
        - bearerAuth: []
      tags:
        - ShopShield
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: uri_id
          schema:
            type: string
            description: Search for URI IDs matching this string
            example: 123e4567-e89b-12d3
          required: false
        - in: query
          name: uri
          schema:
            type: string
            description: Search for URIs matching this string
            example: /shop
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: sort results by this property
            enum:
              - id
              - uri
              - created_at
              - updated_at
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListShopShieldURIsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.shop_shield_controller.sites_id_shopshield_post
      summary: Enable ShopShield for a URI
      description: Enable ShopShield for a URI
      security:
        - bearerAuth: []
      tags:
        - ShopShield
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: New site parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableShopShieldRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetShopShieldURIResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/shop_shield/{uri_id}:
    delete:
      operationId: app.controllers.shop_shield_controller.sites_id_shopshield_id_delete
      summary: Disable ShopShield for a URI
      description: Disable ShopShield for a URI
      tags:
        - ShopShield
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: uri_id
          schema:
            $ref: '#/components/schemas/ShopShieldURIID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: app.controllers.shop_shield_controller.sites_id_shopshield_id_get
      summary: Get ShopShield URI Details
      description: Get ShopShield URI Details
      tags:
        - ShopShield
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: uri_id
          schema:
            $ref: '#/components/schemas/ShopShieldURIID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetShopShieldURIResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ssh/keys:
    get:
      operationId: app.controllers.ssh_keys_controller.sites_id_ssh_keys_get
      summary: List SSH keys for given site.
      description: For given site it will list all SSH keys.
      tags:
        - SSH Keys
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Search 'name' and 'file' for matches
            example: rocket_rsa
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            type: integer
            description: Number of results per page
            default: 100
            example: 10
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: Sort results by the following property
            enum:
              - authstatus
              - file
              - name
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSSHKeysResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.ssh_keys_controller.sites_id_ssh_keys_post
      summary: Import an ssh key for a site
      description: Import an ssh key for a site
      tags:
        - SSH Keys
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Import an ssh key for a site
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportSSHKeyRequest'
            examples:
              import_public_key:
                summary: import a public key
                value:
                  name: id_rsa.pub
                  key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGx6kfg1/JTqGu4AeALa7xV/Vw22KF82zKubXubwmuCU
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
              example:
                success: true
                errors: []
                messages: []
                result:
                  name: id_rsa.pub
                  key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGx6kfg1/JTqGu4AeALa7xV/Vw22KF82zKubXubwmuCU
                  authstatus: authorized
                  haspub: 1
                  file: id_rsa.pub
                  created: 1717564800
                  modified: 1717564800
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
              example:
                success: false
                errors: []
                messages:
                  - Invalid key. Make sure this is a public SSH key starting with 'ssh-'
                result: {}
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.ssh_keys_controller.sites_id_ssh_keys_delete
      summary: Delete SSH key for given site.
      description: For given site remove a SSH key.
      tags:
        - SSH Keys
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Delete SSH key for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteSSHKeyRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ssh/keys/authorize:
    post:
      operationId: app.controllers.ssh_keys_controller.sites_id_ssh_keys_authorize_post
      summary: Activate SSH key for given site.
      description: For given site activate a SSH key.
      tags:
        - SSH Keys
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Activate SSH key for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthorizeSSHKeyRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ssh/keys/deauthorize:
    post:
      operationId: app.controllers.ssh_keys_controller.sites_id_ssh_keys_deauthorize_post
      summary: Deactivate SSH key for given site.
      description: For given site deactivate a SSH key.
      tags:
        - SSH Keys
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Deactivate SSH key for given site.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeauthorizeSSHKeyRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ssh/keys/{name}:
    get:
      operationId: app.controllers.ssh_keys_controller.sites_id_ssh_keys_name_get
      summary: View SSH key info for given site.
      description: For given site get a SSH key info.
      tags:
        - SSH Keys
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: name
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHKeyResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ssl/certificates:
    get:
      operationId: app.controllers.custom_ssl_controller.sites_id_ssl_certificates_get
      summary: Get a list of details about previously uploaded certificates
      description: Get a list of details about previously uploaded certificates
      tags:
        - Custom SSL
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomSSLResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.custom_ssl_controller.sites_id_ssl_certificates_post
      summary: Upload a custom SSL certificate for domains of this site
      description: Your site SSL is initially managed by Cloudflare. This endpoint allows you to instead manage your SSL by uploading your own certificate.
      tags:
        - Custom SSL
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomSSLRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomSSLResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/ssl/certificates/{certificate_id}:
    get:
      operationId: app.controllers.custom_ssl_controller.sites_id_ssl_certificates_id_get
      summary: Details about a previously uploaded custom SSL certificate
      description: Details about a previously uploaded custom SSL certificate
      tags:
        - Custom SSL
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: certificate_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomSSLResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.custom_ssl_controller.sites_id_ssl_certificates_id_delete
      summary: Remove custom SSL certificate for this site and associated domains
      description: Remove custom SSL certificate and return to SSL managed by Cloudflare
      tags:
        - Custom SSL
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: certificate_id
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/staging:
    post:
      operationId: app.controllers.sites_controller.sites_id_staging_post
      summary: Create new staging site for given site (via background task)
      description: Create staged version of site, can be used to make changes and then push into production
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Used if the staging site should have a vanity domain
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStagingRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.sites_controller.sites_id_staging_delete
      summary: Delete staging site for given site.
      description: Removes existing staging version of given site.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/staging/publish:
    post:
      operationId: app.controllers.sites_controller.sites_id_staging_publish_post
      summary: Publish staging site as an active site (via background task)
      description: Publish staging version of site to production, used to apply changes from staging to live site.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/tasks:
    get:
      operationId: app.controllers.sites_controller.sites_id_tasks_get
      summary: List Site Tasks
      description: Get a list of all the tasks for a site
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: task_id
          schema:
            $ref: '#/components/schemas/TaskID'
          required: false
        - in: query
          name: task_type
          schema:
            $ref: '#/components/schemas/SiteTaskType'
          required: false
        - in: query
          name: task_status
          schema:
            $ref: '#/components/schemas/TaskStatus'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            type: integer
            default: 100
            description: Results per page
            example: 10
          required: false
        - in: query
          name: sort
          schema:
            type: string
            enum:
              - id
              - perc
              - task_status
              - task_type
              - updated
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTasksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/tasks/{task_id}/cancel:
    post:
      operationId: app.controllers.sites_controller.sites_id_tasks_task_id_cancel_post
      summary: Mark Site Task as Cancelled
      description: Mark a site task as cancelled. This can only be done if the task has already gone on longer than its timeout.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: task_id
          schema:
            $ref: '#/components/schemas/TaskID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/themes:
    get:
      operationId: app.controllers.themes_controller.sites_id_themes_get
      summary: List installed Wordpress themes on account
      description: Get list of Wordpress themes currently installed on given site.
      tags:
        - Themes
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Search theme name/title/description
            example: Twenty Twenty
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            type: integer
            description: Number of results per page
            example: 10
            default: 50
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: sort results by this property
            enum:
              - description
              - name
              - status
              - title
              - update
              - version
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListThemesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.themes_controller.sites_id_themes_post
      summary: Install new WordPress themes to site
      description: Endpoint that can be used to install one or more WordPress themes for given site.
      tags:
        - Themes
      security:
        - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallThemesRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstallThemesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: app.controllers.themes_controller.sites_id_themes_patch
      summary: Activate or deactivate WordPress themes on given site
      description: Endpoint that can be used to either activate or deactivate already installed theme on given site.
      tags:
        - Themes
      security:
        - bearerAuth: []
      requestBody:
        description: Theme to be activated or deactivated
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateThemeRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivateThemeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: app.controllers.themes_controller.sites_id_themes_put
      summary: Update WordPress themes on given site
      description: Endpoint that can be used to update already installed theme to a newer version on given site.
      tags:
        - Themes
      security:
        - bearerAuth: []
      requestBody:
        description: Theme to be updated.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateThemeRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateThemeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.themes_controller.sites_id_themes_delete
      summary: Delete WordPress theme from site
      description: Endpoint that can be to remove installed theme from a given site.
      tags:
        - Themes
      security:
        - bearerAuth: []
      requestBody:
        description: Theme to be deleted.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteThemeRequest'
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteThemeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/themes/search:
    get:
      operationId: app.controllers.themes_controller.sites_id_themes_search_get
      summary: Search for WordPress themes that can be installed
      description: Get list of WordPress themes that can be installed to site.
      tags:
        - Themes
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: query
          schema:
            description: Search terms
            type: string
            example: '2022'
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
        - in: query
          name: browse
          schema:
            description: response ordering. Leave off for default order
            type: string
            enum:
              - featured
              - new
              - popular
              - updated
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchThemesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/transfer:
    post:
      operationId: app.controllers.customer_site_transfers_controller.customer_site_transfers_post
      summary: Initiate a site transfer
      description: Initiate a site transfer
      tags:
        - Site Transfers
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Create a customer site transfer
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomerSiteTransferRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerSiteTransferResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/transfer/{transfer_id}/accept:
    post:
      operationId: app.controllers.customer_site_transfers_controller.customer_site_transfers_accept_post
      summary: Accept a site transfer
      description: Accept a site transfer
      tags:
        - Site Transfers
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: transfer_id
          schema:
            $ref: '#/components/schemas/TransferID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerSiteTransferResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '412':
          description: Precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/transfer/{transfer_id}/cancel:
    post:
      operationId: app.controllers.customer_site_transfers_controller.customer_site_transfers_cancel_post
      summary: Cancel a site transfer
      description: Cancel a site transfer
      tags:
        - Site Transfers
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: transfer_id
          schema:
            $ref: '#/components/schemas/TransferID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerSiteTransferResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/transfer/{transfer_id}/reject:
    post:
      operationId: app.controllers.customer_site_transfers_controller.customer_site_transfers_reject_post
      summary: Reject a site transfer
      description: Reject a site transfer
      tags:
        - Site Transfers
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: transfer_id
          schema:
            $ref: '#/components/schemas/TransferID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerSiteTransferResponse'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/usage:
    get:
      operationId: app.controllers.sites_controller.sites_id_usage_get
      summary: Get site usage.
      description: For given site it common usage statistics like visitors, bandwidth and disk usage.
      tags:
        - Sites
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: date_from
          schema:
            type: string
            format: date
          required: false
        - in: query
          name: date_to
          schema:
            type: string
            format: date
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSiteUsageResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/users:
    get:
      operationId: app.controllers.site_users_controller.sites_id_users_get
      summary: List all the site users for a Site
      description: For a given site, list all site user which have access to it
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: search
          schema:
            type: string
            description: Search based on the site user's email/name
            example: siteuser@rocket.net
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: Sort results by the following property
            enum:
              - email
              - user_id
              - status
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSiteSiteUsersResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.site_users_controller.sites_id_users_post
      summary: Send invite to site user.
      description: For a given site and send an invite for site user to join. The invite will expire in 7 days.
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: Invite user to site
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteSiteUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteSiteUserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/users/accept:
    get:
      operationId: app.controllers.site_users_controller.sites_id_users_accept_get
      summary: Accept invite to site.
      description: For a given site and given token, accept his invitation to site.
      tags:
        - Site Users
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: token
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.site_users_controller.sites_id_users_accept_post
      summary: Accept invite to site.
      description: For a given site and given logged in user, accept his invitation to site.
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/users/{user_id}:
    delete:
      operationId: app.controllers.site_users_controller.sites_id_users_user_id_delete
      summary: Remove site access for site user.
      description: For a given site and remove given user from access list
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: user_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/users/{user_id}/reinvite:
    post:
      operationId: app.controllers.site_users_controller.sites_id_users_user_id_reinvite_post
      summary: Send re-invite to site user.
      description: For a given site and send an invite for given existing site user to join
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: path
          name: user_id
          schema:
            type: integer
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteSiteUserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/visitors:
    get:
      operationId: app.controllers.visitors_controller.sites_id_visitors_get
      summary: Get unique visitors statistics for given site.
      description: For given site get list of unique visitors per day.
      tags:
        - Visitors
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
        - in: query
          name: date_from
          schema:
            type: string
            format: date
          required: false
        - in: query
          name: date_to
          schema:
            type: string
            format: date
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitorsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/wp/login:
    get:
      operationId: app.controllers.wordpress_controller.sites_id_wp_login_get
      summary: Get SSO link for wordpress account
      description: For given site it returns valid SSO link that someone can use to sign in into WordPress account
      tags:
        - WordPress
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WordpressLoginResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/wp/status:
    get:
      operationId: app.controllers.wordpress_controller.sites_id_wp_status_get
      summary: Get Status of WordPress for the site
      description: For given site it returns status about whether or not WordPress is functioning properly
      tags:
        - WordPress
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WordpressStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/{id}/wpcli:
    post:
      operationId: app.controllers.wordpress_controller.sites_id_wpcli_post
      summary: Execute wp cli command on site.
      description: For a given site, execute a wp cli command.
      tags:
        - WordPress
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: id
          schema:
            $ref: '#/components/schemas/SiteID'
          required: true
      requestBody:
        description: ExecuteCli.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteWPCLIRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecuteCliResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/templates:
    get:
      operationId: app.controllers.site_templates_controller.sites_templates_get
      summary: List Site Templates
      description: Get list of all Site Templates which can be used to create new sites
      security:
        - bearerAuth: []
      tags:
        - Site Templates
      parameters:
        - in: query
          name: created_from.site_id
          description: If passed, will restrict the response to results matching the site ID the template was created from
          schema:
            type: integer
            example: 8675309
          required: false
        - in: query
          name: created_from.domain
          description: If passed, will restrict the response to results matching the domain the template was created from
          schema:
            type: string
            example: our-favorite-woocommerce-setup.tld
          required: false
        - in: query
          name: tags
          description: If passed, will restrict the response to results matching these tags
          example:
            - woocommerce
            - automobile parts
          schema:
            type: array
            items:
              type: string
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: sort
          description: Which property to sort the results by
          schema:
            type: string
            enum:
              - name
              - created_at
              - updated_at
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSiteTemplatesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: app.controllers.site_templates_controller.sites_templates_post
      summary: '[Deprecated]: Create new site template'
      description: This route has been replaced by POST /site_templates which uses a background task. Do not use this route
      tags:
        - Site Templates
      security:
        - bearerAuth: []
      requestBody:
        description: New site template parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSiteTemplateRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteTemplateResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/templates/{template_id}:
    get:
      operationId: app.controllers.site_templates_controller.sites_templates_id_get
      summary: Get Site Templates
      description: Get information about a specific site template
      security:
        - bearerAuth: []
      tags:
        - Site Templates
      parameters:
        - in: path
          name: template_id
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteTemplateResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: app.controllers.site_templates_controller.sites_templates_id_delete
      summary: Delete Site Templates
      description: Delete a Site Template
      security:
        - bearerAuth: []
      tags:
        - Site Templates
      parameters:
        - in: path
          name: template_id
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/templates/{template_id}/sites:
    post:
      operationId: app.controllers.site_templates_controller.sites_templates_id_sites_post
      summary: Create new site from a site template
      description: Kicks off the creation of a task to create a new site from a site template
      tags:
        - Site Templates
      parameters:
        - in: path
          name: template_id
          schema:
            type: string
            format: uuid
          required: true
      security:
        - bearerAuth: []
      requestBody:
        description: New site template parameters
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSiteFromTemplateRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/users:
    post:
      operationId: app.controllers.site_users_controller.sites_users_post
      summary: Create new site user.
      description: Create new user that has site access rights.
      tags:
        - Site Users
      security:
        - bearerAuth: []
      requestBody:
        description: Add an site user.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSiteUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSiteUserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: app.controllers.site_users_controller.sites_users_get
      summary: List all the site for user.
      description: For a given user, list all sites user has access to.
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: domain
          schema:
            $ref: '#/components/schemas/SearchParamDomain'
          required: false
        - in: query
          name: search
          schema:
            $ref: '#/components/schemas/SearchParamSearchDomainLabel'
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: status
          schema:
            type: array
            description: One or more statuses to filter by
            items:
              type: string
              enum:
                - Active
                - Invited
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: Sort results by the following property
            enum:
              - created_at
              - domain
              - label
              - disk_usage
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSiteUserSitesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/users/login:
    post:
      operationId: app.controllers.site_users_controller.sites_users_login_post
      summary: Login as a site user.
      description: For given username and password generate site access token
      tags:
        - Site Users
      requestBody:
        description: Login as a site user
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/users/reset-password:
    post:
      operationId: app.controllers.site_users_controller.sites_users_reset_password_post
      summary: Reset password for the site user.
      description: For a given site user, send a new reset password token.
      tags:
        - Site Users
      requestBody:
        description: Reset user password
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetSiteUserPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/users/{user_id}:
    patch:
      operationId: app.controllers.site_users_controller.sites_users_user_id_patch
      summary: Update site user.
      description: For a given user, update site users username, email or password
      tags:
        - Site Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: user_id
          schema:
            type: integer
          required: true
      requestBody:
        description: Update site user details
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSiteUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/sites/users/{user_id}/password:
    post:
      operationId: app.controllers.site_users_controller.sites_users_user_id_password_post
      summary: Create or update password for the site user.
      description: For a given site user, create a new password when user is initially invited to site or resets their password
      tags:
        - Site Users
      parameters:
        - in: path
          name: user_id
          schema:
            type: integer
          required: true
      requestBody:
        description: Add an site user password
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSiteUserPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/password_strength:
    post:
      operationId: app.controllers.password_protection_controller.get_password_strength
      summary: Check strength of the given password.
      description: For a given password, return information about its strength.
      tags:
        - Password Strength
      security:
        - bearerAuth: []
      requestBody:
        description: Password to check (not saved anywhere)
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordStrengthRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasswordStrengthResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users:
    post:
      summary: Create new user who can access your Rocket.net account. An email will be sent for them to set their password.
      description: Create new user.
      operationId: app.controllers.users_controller.users_post
      tags:
        - Account Users
      security:
        - bearerAuth: []
      requestBody:
        description: New user's details
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      summary: List all users in your account
      description: List all users in your account
      operationId: app.controllers.users_controller.users_get
      tags:
        - Account Users
      security:
        - bearerAuth: []
      parameters:
        - in: query
          name: search
          schema:
            description: Search users by this string
            type: string
            example: Elena
          required: false
        - in: query
          name: page
          schema:
            $ref: '#/components/schemas/Page'
          required: false
        - in: query
          name: per_page
          schema:
            $ref: '#/components/schemas/PerPage'
          required: false
        - in: query
          name: sort
          schema:
            type: string
            description: sort results by this property
            enum:
              - first_name
              - last_name
              - email
          required: false
        - in: query
          name: direction
          schema:
            $ref: '#/components/schemas/SortDirection'
          required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUsersResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users/{user_id}:
    delete:
      summary: Remove a User from your account
      description: Remove a User from your account
      operationId: app.controllers.users_controller.users_user_id_delete
      tags:
        - Account Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: user_id
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      summary: Get information about a specific user in your account.
      description: Get information about a user in your account by user_id
      operationId: app.controllers.users_controller.users_user_id_get
      tags:
        - Account Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: user_id
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      summary: Update user
      description: For a given user, update their information
      operationId: app.controllers.users_controller.users_user_id_patch
      tags:
        - Account Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: user_id
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        description: Update user details
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users/{user_id}/password:
    post:
      summary: Create first time password for the Account User
      description: 'After a user has been invited, they will get a token to set their password for the first time. Use this route to set the user''s password. NOTE: The token expires after a single use or 30 mins. If the user does not set their password within 30 minutes, you will need to re-invite them.'
      operationId: app.controllers.users_controller.users_user_id_password_post
      tags:
        - Account Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: user_id
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        description: New user's password info
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetUserPasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users/{user_id}/reinvite:
    post:
      summary: Re-send invite email to User
      description: Sends a new invite should the User not have accepted previously before the invite expired or if they never got the email (Invalidates any previous invites)
      operationId: app.controllers.users_controller.users_user_id_reinvite_post
      tags:
        - Account Users
      security:
        - bearerAuth: []
      parameters:
        - in: path
          name: user_id
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users/accept:
    get:
      summary: Accept an invitation to help manage a Rocket.net account
      description: Accept user invite
      operationId: app.controllers.users_controller.users_accept_get
      tags:
        - Account Users
      security: []
      parameters:
        - in: query
          name: token
          schema:
            type: string
            description: token to accept a user invite
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users/password_strength:
    post:
      operationId: app.controllers.users_controller.get_password_strength
      summary: Check strength of the given password.
      description: For a given password, return information about its strength.
      tags:
        - Password Strength
      requestBody:
        description: Password to check (not saved anywhere)
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordStrengthRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPasswordStrengthResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/users/generate_password:
    post:
      operationId: app.controllers.users_controller.generate_password_post
      summary: Generate a password that meets strength requirements.
      description: Returns a random password that satisfies the platform's password rules.
      tags:
        - Password Strength
      security:
        - bearerAuth: []
      requestBody:
        description: Optional parameters for generation (e.g. length).
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeneratePasswordRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneratePasswordResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized to access endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Given site not found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    AccessLogEntry:
      title: AccessLogEntry
      type: object
      properties:
        RayID:
          $ref: '#/components/schemas/RayID'
        EdgeResponseStatus:
          $ref: '#/components/schemas/EdgeStatusCode'
        ClientIP:
          $ref: '#/components/schemas/ClientIP'
        ClientRequestUserAgent:
          $ref: '#/components/schemas/UserAgent'
        ClientDeviceType:
          $ref: '#/components/schemas/DeviceType'
        ClientRequestURI:
          $ref: '#/components/schemas/URI'
        ClientRequestHost:
          $ref: '#/components/schemas/HTTPHost'
        OriginResponseStatus:
          $ref: '#/components/schemas/OriginHTTPStatusCode'
        CacheCacheStatus:
          $ref: '#/components/schemas/CacheStatus'
        ClientCountry:
          type: string
          description: Lowercase 2-letter country code of the requesting IP
          example: us
        ClientRequestReferer:
          $ref: '#/components/schemas/Referer'
        ClientRequestMethod:
          $ref: '#/components/schemas/HTTPMethod'
        timestamp:
          $ref: '#/components/schemas/DateTime'
    AccountTask:
      title: AccountTask
      type: object
      properties:
        id:
          $ref: '#/components/schemas/TaskID'
        task_status:
          $ref: '#/components/schemas/TaskStatus'
        account_user_id:
          type: integer
          description: ID of the account the task belongs to
          example: 90099099
        user_id:
          type: string
          description: ID of the user who created the task
          example: 298348a3-c006-46a3-86c2-bb6922b6e452
        perc:
          type: integer
          description: Percentage of completion
          example: 90
        updated:
          $ref: '#/components/schemas/UpdatedAt'
        created:
          $ref: '#/components/schemas/CreatedAt'
        message:
          type: string
          description: Information about the task. Errors if it failed
          example: task execution timed out
        task_type:
          $ref: '#/components/schemas/AccountTaskType'
        meta_data:
          $ref: '#/components/schemas/SiteMetadata'
        task_level:
          type: string
          description: Level at which the task exists
          enum:
            - account
            - site
          example: account
    ActivateThemeRequest:
      title: ActivateThemeRequest
      type: object
      properties:
        theme:
          type: string
        status:
          type: string
          description: Activate or Deactivate a theme
          enum:
            - activate
            - deactivate
    ActivateThemeResponse:
      title: ActivateThemeResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ActivateThemeResult'
    ActivateThemeResult:
      title: ActivateThemeResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              activated:
                type: string
    Addon:
      title: Addon
      description: An additional product / service
      type: object
      properties:
        name:
          type: string
          description: Name of the additional product / service
          example: 5 additional sites
        type:
          type: string
          description: Description of the additional product / service
          example: Private Node - Enterprise 1
        addon_id:
          type: integer
          description: ID of the addon product
          example: 880088
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        next_billing_date:
          type: string
          description: Time stamp of when the next payment is due
          example: '2024-01-01T02:00:00Z'
        status:
          type: string
          enum:
            - Active
            - Cancelled
            - Completed
            - Pending
            - Suspended
            - Terminated
        pricing:
          $ref: '#/components/schemas/ProductPricing'
    AddPasswordProtectionUserRequest:
      title: AddPasswordProtectionUserRequest
      type: object
      properties:
        username:
          $ref: '#/components/schemas/PasswordProtectionUsername'
        password:
          type: string
          description: Password for the user
          example: R3@llyStr0ng!P@55w0rd_123456
    AddPasswordProtectionUserResponse:
      title: AddPasswordProtectionUserResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/AddPasswordProtectionUserResult'
    AddPasswordProtectionUserResult:
      title: AddPasswordProtectionUserResult
      type: object
      properties:
        result:
          type: object
          properties:
            success:
              type: boolean
    ASNDescription:
      title: ASNDescription
      type: string
      description: Description of the Autonomous System (AS) the IP belongs to
      example: UUNET
    AuthorizeSSHKeyRequest:
      title: AuthorizeSSHKeyRequest
      type: object
      properties:
        name:
          type: string
      required:
        - name
    AutomatedBackup:
      title: AutomatedBackup
      type: object
      description: Automated backup of the site's files and database
      properties:
        recoveryPoint:
          $ref: '#/components/schemas/RecoveryPoint'
        created_at:
          type: string
          description: Date and time the backup was created
          example: '2024-08-16T10:09:20+00:00'
        status:
          $ref: '#/components/schemas/AutomatedBackupStatus'
    AutomatedBackupList:
      title: AutomatedBackupList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/AutomatedBackup'
    AutomatedBackupStatus:
      type: string
      description: Status of the backup (DONE - backup complete, RESTORING - backup currently being restored)
      enum:
        - DONE
        - RESTORING
    AvailableCertificateAuthority:
      title: AvailableCertificateAuthority
      type: string
      description: Certificate Authority to be used to issue SSL certificates for the site
      example: google
      enum:
        - google
        - lets_encrypt
    BackupLabel:
      title: BackupLabel
      type: string
      description: Label / Name of the backup
      example: April 3rd Backup - Before Plugin Updates
    BackupStatus:
      title: BackupStatus
      type: string
      description: Status of the backup (NEW - task created, PROGRESS - backup in progress, DONE - backup complete, ERROR - backup failed, RESTORING - backup currently being restored)
      enum:
        - NEW
        - PROGRESS
        - DONE
        - ERROR
        - RESTORING
    BandwidthTopUsageResponse:
      title: BandwidthTopUsageResponse
      type: object
      properties:
        data:
          $ref: '#/components/schemas/BandwidthTopUsageViewer'
        success:
          $ref: '#/components/schemas/SuccessBoolean'
        errors:
          $ref: '#/components/schemas/Errors'
    BandwidthTopUsageViewer:
      title: BandwidthTopUsageViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/BandwidthTopUsageZone'
    BandwidthTopUsageZone:
      title: BandwidthTopUsageZone
      type: object
      properties:
        __typename:
          type: string
          example: zone
          description: name of the property
          enum:
            - zone
        countries:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        methods:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topASNs:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetricDescription'
        topBrowsers:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topCacheStatuses:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topClientIPs:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topColoCodes:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topDeviceTypes:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topEdgeStatusCodes:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsIntMetric'
        topHTTPProtocolVersions:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topHosts:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topOSs:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topOriginStatusCodes:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsIntMetric'
        topPaths:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topReferers:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topUserAgents:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        topXRequestedWith:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric'
        total:
          type: array
          items:
            type: object
            properties:
              __typename:
                $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
              count:
                $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
              sum:
                $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytesAndVisits'
    BandwidthUsageReportingResponse:
      title: BandwidthUsageReportingResponse
      type: object
      properties:
        data:
          $ref: '#/components/schemas/BandwidthUsageViewer'
        success:
          $ref: '#/components/schemas/SuccessBoolean'
        errors:
          $ref: '#/components/schemas/Errors'
    BandwidthUsageReportingResponseObj:
      title: BandwidthUsageReportingResponseObj
      description: Bandwidth analytics report
      allOf:
        - type: object
          properties:
            result:
              $ref: '#/components/schemas/BandwidthUsageReportingResponseObjResult'
        - $ref: '#/components/schemas/BasicResponse'
    BandwidthUsageReportingResponseObjResult:
      title: BandwidthUsageReportingResponseObjResult
      type: object
      properties:
        totals:
          type: object
          description: Usage totals
          properties:
            requests:
              $ref: '#/components/schemas/CountInteger'
            usage:
              $ref: '#/components/schemas/CountInteger'
            visits:
              $ref: '#/components/schemas/CountInteger'
        graph:
          type: object
          description: Individual data points
          properties:
            requests:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
            usage:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
            visits:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
    BandwidthUsageResponse:
      title: BandwidthUsageResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/BandwidthUsageResult'
    BandwidthUsageResult:
      title: BandwidthUsageResult
      properties:
        result:
          type: object
          properties:
            usages:
              type: array
              items:
                type: object
                properties:
                  bandwidth:
                    type: integer
                  date:
                    type: string
            total:
              type: integer
    BandwidthUsageViewer:
      title: BandwidthUsageViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/BandwidthUsageZone'
    BandwidthUsageZone:
      title: BandwidthUsageZone
      type: object
      properties:
        __typename:
          type: string
          example: zone
          description: name of the property
          enum:
            - zone
        series:
          type: array
          description: Request summary for each type of request
          items:
            $ref: '#/components/schemas/BandwidthUsageZoneInfo'
    BandwidthUsageZoneInfo:
      title: BandwidthUsageZoneInfo
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            ts:
              $ref: '#/components/schemas/TimeStamp'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
    BasicListResponse:
      title: BasicListResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
    BasicResponse:
      title: BasicResponse
      type: object
      properties:
        success:
          $ref: '#/components/schemas/SuccessBoolean'
        errors:
          $ref: '#/components/schemas/ErrorsEmpty'
        messages:
          $ref: '#/components/schemas/MessagesEmpty'
    BasicReportingDataResponse:
      title: BasicReportingDataResponse
      type: object
      properties:
        errors:
          $ref: '#/components/schemas/Errors'
    BillingSSOResponse:
      title: BillingSSOResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SSOLink'
    BillingAddress:
      title: BillingAddress
      description: Address associated with a credit card or billing contact
      type: object
      properties:
        id:
          type: integer
          description: Billing address identifier
          example: 42
        first_name:
          type: string
          description: First name of the billing contact
          example: Rocket
        last_name:
          type: string
          description: Last name of the billing contact
          example: Billing-Contact
        address_line_1:
          type: string
          description: First Address line of the billing contact
          example: 17885 SE Federal Hwy
        address_line_2:
          type: string
          description: Second Address line of the billing contact
          example: Suite 100
        company_name:
          type: string
          description: Company name of the billing contact
          example: Rocket.net
        email:
          type: string
          description: Email address of the billing contact
          example: billing@rocket.net
        city:
          type: string
          description: City of the billing contact
          example: Jupiter
        state:
          type: string
          description: State / Province of the billing contact
          example: FL
        country:
          type: string
          description: Country Code of the billing contact
          example: US
        postal_code:
          type: string
          description: Postal code of the billing contact
          example: '33469'
        telephone:
          type: string
          description: Telephone number of the billing contact
          example: 877-374-0764
        receive_invoice_emails:
          type: boolean
          description: If this email address should receive invoice related emails
          default: false
          example: false
    BillingAddresses:
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/BillingAddressWithPaymentMethods'
    BillingAddressResponse:
      title: BillingContactsResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/BillingAddressResult'
    BillingAddressWithPaymentMethods:
      title: BillingAddressWithPaymentMethods
      type: object
      allOf:
        - $ref: '#/components/schemas/BillingAddress'
        - $ref: '#/components/schemas/AssociatedPaymentMethods'
    BillingAddressesResponse:
      title: BillingContactsResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/BillingAddresses'
    BillingEmail:
      type: object
      title: BillingEmail
      properties:
        id:
          type: integer
          description: ID of the email
          example: 880088
        subject:
          type: string
          description: Subject of the email
          example: Credit Card Payment Confirmation
        message:
          type: string
          description: Message of the email in HTML format (escaped)
          example: |-
            <!DOCTYPE html>
            <html xmlns="http://www.w3.org/1999/xhtml xmlns:v="urn:schemas-microsoft-com:vml">
            <head>
        date:
          type: string
          description: Date the email was sent
          example: '2024-05-21 11:13:10'
        to:
          type: string
          description: To address of the email
          example: customer@rocket.net
        cc:
          type: string
          description: CC address of the email
          example: billing@rocket.net
        bcc:
          type: string
          description: BCC address of the email
          example: bcc@rocket.net
    BillingEmailResponse:
      title: BillingEmailResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/BillingEmailResult'
    BillingEmailResult:
      title: BillingEmailResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/BillingEmail'
    BillingEmails:
      type: object
      title: BillingEmails
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/BillingEmail'
    BillingEmailsResponse:
      title: BillingEmailsResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/BillingEmails'
    BillingInvoice:
      title: BillingInvoice
      type: object
      description: Invoice for hosting plan and addon(s)
      properties:
        id:
          type: integer
          description: ID of the invoice
          example: 880088
        date:
          type: string
          description: Date the invoice was created
          example: '2024-05-21'
        due_date:
          type: string
          description: Date the invoice is due
          example: '2024-05-21'
        payment:
          type: object
          properties:
            status:
              type: string
              enum:
                - Collections
                - Payment Pending
                - Paid
                - Refunded
                - Unpaid
              example: Unpaid
            date_paid:
              type: string
              description: If paid, the date upon when the payment was made
              example: '2024-05-21 11:13:10'
            last_capture_attempt:
              type: string
              description: Date when the last payment was attempted to be captured
              example: '2024-05-21 11:13:10'
            date_refunded:
              type: string
              description: If the invoice has been refunded, the date upon which that happened
              example: '2024-05-21 11:13:10'
            date_cancelled:
              type: string
              description: If the invoice has been cancelled, the date upon which that happened
              example: '2024-05-21 11:13:10'
            payment_method:
              $ref: '#/components/schemas/BillingPaymentMethod'
        subtotal:
          type: number
          description: Sub-Total amount of the invoice
          example: 30
        total:
          type: number
          description: Total amount of the invoice
          example: 30
        credit:
          type: number
          description: Any account credits that were applied to the invoice
          example: 0
        items:
          type: array
          description: Items on the invoice
          items:
            $ref: '#/components/schemas/BillingInvoiceItem'
        transactions:
          type: array
          description: Transactions related to the invoice
          items:
            $ref: '#/components/schemas/BillingInvoiceTransaction'
        download_link:
          type: string
          description: Link that can be used to download the invoice
        pay_to_address:
          type: string
          description: Address that the invoice is payable to
    BillingInvoiceForList:
      title: BillingInvoiceForList
      type: object
      properties:
        id:
          type: integer
          description: ID of the invoice
          example: 880088
        date:
          type: string
          description: Date the invoice was created
          example: '2024-05-21'
        due_date:
          type: string
          description: Date the invoice is due
          example: '2024-05-21'
        payment:
          type: object
          properties:
            status:
              type: string
              enum:
                - Cancelled
                - Collections
                - Draft
                - Payment Pending
                - Paid
                - Refunded
                - Unpaid
              example: Unpaid
        total:
          type: number
          description: Total amount of the invoice
          example: 30
        download_link:
          type: string
          description: Link that can be used to download the invoice
    BillingInvoiceItem:
      type: object
      title: BillingInvoiceItem
      description: Item that was invoiced
      properties:
        id:
          type: integer
        type:
          type: string
          description: The type of item
          enum:
            - Hosting Plan
            - Addon
          example: Hosting Plan
        product_or_addon_id:
          type: integer
          description: ID of the Hosting Plan Product or Addon Product
          example: 1
        description:
          type: string
          description: Description of the product
          example: Starter (05/21/2024 - 06/20/2024)
        amount:
          type: number
          description: Cost of the product
          example: 30
    BillingInvoices:
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/BillingInvoiceForList'
    BillingInvoiceResponse:
      type: object
      title: BillingInvoiceResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/BillingInvoiceResult'
    BillingInvoicesResponse:
      type: object
      title: BillingInvoicesResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/BillingInvoices'
    BillingInvoiceTransaction:
      type: object
      title: BillingInvoiceTransaction
      description: Transaction that is associated with this invoice
      properties:
        id:
          type: string
          description: ID of the transaction at the payment gateway
          example: txn_3PIuNDIpHZfwip1P010HjTHA
        type:
          type: string
          description: The type of transaction
          enum:
            - Credit Card
            - PayPal
          example: Credit Card
        date:
          type: string
          description: Date the transaction occurred
          example: '2024-05-21 11:13:10'
        amount:
          type: number
          description: Amount of the transaction
          example: 30
    BillingPaymentMethod:
      title: BillingPaymentMethod
      type: object
      description: Payment method on the account. Either a Credit Card or PayPal. Onlty the 'active' payment method will be used to pay any automated payments.
      required:
        - id
        - type
        - description
        - active
      properties:
        id:
          $ref: '#/components/schemas/BillingPaymentMethodID'
        type:
          $ref: '#/components/schemas/BillingPaymentMethodType'
        active:
          $ref: '#/components/schemas/BillingPaymentMethodActive'
        description:
          $ref: '#/components/schemas/BillingPaymentMethodDescription'
        address:
          $ref: '#/components/schemas/BillingAddress'
        address_id:
          type: integer
          description: ID of the billing address used for this payment method
          example: 888000888
        card_last_four:
          $ref: '#/components/schemas/BillingPaymentMethodCardLastFour'
        card_type:
          $ref: '#/components/schemas/BillingPaymentMethodCardType'
        expiry_date:
          $ref: '#/components/schemas/BillingPaymentMethodExpiryDate'
        last_updated:
          $ref: '#/components/schemas/BillingPaymentMethodLastUpdated'
        gateway_token:
          type: string
          description: If requested, the token used to pay at the payment gateway
          example: pm_1Q56yCIpHZfwip1PT4nnaIMi
    BillingPaymentMethods:
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/BillingPaymentMethod'
    BillingPaymentMethodResponse:
      title: BillingPaymentMethodResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/BillingPaymentMethodResult'
    BillingPaymentMethodsResponse:
      title: BillingPaymentMethodsResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/BillingPaymentMethods'
    BillingProduct:
      title: BillingProduct
      description: rocket.net hosting plan
      type: object
      required:
        - id
        - name
        - type
        - description
        - pricing
        - purchase_method
      properties:
        id:
          type: integer
          example: 1
          description: Product identifier
        name:
          type: string
          description: Name of the product
          example: Expert
        description:
          type: string
          description: Description of the product
          example: |
            25 WordPress Installs
            5,000,000 Visits
            50GB Storage
            500GB Bandwidth
            Free SSL
        type:
          type: string
          enum:
            - Managed
            - Agency
            - Enterprise
          example: Managed
        purchase_method:
          type: string
          enum:
            - Self-Service
            - Contact
        pricing:
          $ref: '#/components/schemas/BillingProductPricing'
    BillingProductPricing:
      title: BillingProductPricing
      type: object
      required:
        - billing_cycle_type
        - billing_cycle_options
      properties:
        billing_cycle_type:
          type: string
          enum:
            - recurring
        billing_cycle_options:
          type: array
          items:
            $ref: '#/components/schemas/BillingProductPricingCycleOptions'
    BillingProductPricingCycleOptions:
      title: BillingProductPricingCycleOptions
      type: object
      required:
        - billing_cycle
        - cost
        - currency
      properties:
        billing_cycle:
          type: string
          description: Length of each billing cycle
          enum:
            - Monthly
            - Annual
          example: Monthly
        cost:
          type: number
          format: float
          description: Product cost for the given billing cycle
          example: 10
        currency:
          type: string
          description: Currency in which payments will settle
          example: USD
        next_renewal_date:
          type: string
          description: The next date upon which payment will be due after the first billing cycle
          example: '2024-01-31'
        coupon:
          $ref: '#/components/schemas/BillingProductPricingCoupon'
    BillingProductPricingCoupon:
      type: object
      description: Information about a coupon that works on this product, if `coupon_code` is applied
      properties:
        cost:
          type: number
          format: float
          description: Cost with coupon applied
          example: 1
        type:
          type: string
          enum:
            - price override
            - fixed amount
            - percentage
          example: fixed amount
        discount_value:
          type: number
          format: float
          description: Amount discounted or percentage discounted
          example: 29
        recurring:
          type: boolean
          description: If the discount happens more than on the first biling cycle
          example: false
        recurring_times:
          type: number
          description: If the recurring discount is limited to a specific number of billing cycles
          example: 3
    BillingProducts:
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/BillingProduct'
    BillingProductsResponse:
      title: BillingProductsResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/BillingProducts'
    CacheStatus:
      title: CacheStatus
      type: string
      description: Type of cache interaction
      example: hit
      enum:
        - bypass
        - dynamic
        - expired
        - hit
        - miss
        - none
        - stable
    CancelAccountRequest:
      title: CancelAccountRequest
      type: object
      description: Request to cancel a Rocket.net account
      required:
        - description
        - timeline
      properties:
        timeline:
          description: Specifies whether the account cancellation request should take effect immediately or at the end of the current billing cycle
          type: string
          enum:
            - immediate
            - end_of_billing_period
        description:
          type: string
          description: Brief description of reason for cancelling the account
          example: We are no longer selling products online
    CDNCacheContentResponse:
      title: CDNCacheContentResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/CDNCacheContentResponseData'
    CDNCacheContentResponseData:
      title: CDNCacheContentResponseData
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CDNCacheContentViewer'
    CDNCacheContentViewer:
      title: CDNCacheContentViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/CDNCacheStatusZone'
    CDNCacheStatusResponse:
      title: CDNCacheStatusResponse
      type: object
      properties:
        data:
          type: object
          properties:
            viewer:
              type: object
              properties:
                __typename:
                  $ref: '#/components/schemas/ResponseViewerType'
                zones:
                  type: array
                  items:
                    $ref: '#/components/schemas/CDNCacheStatusZone'
        errors:
          $ref: '#/components/schemas/Errors'
    CDNCacheStatusDimensions:
      title: CDNCacheStatusDimensions
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
        cacheStatus:
          $ref: '#/components/schemas/CacheStatus'
        edgeResponseContentTypeName:
          type: string
          description: name of the content type (human-readable)
          example: js
    CDNCacheStatusZone:
      title: CDNCacheStatusZone
      type: object
      properties:
        __typename:
          type: string
          example: zone
          description: name of the property
          enum:
            - zone
        cacheStatus:
          type: array
          description: Request summary for each type of request
          items:
            $ref: '#/components/schemas/CDNCacheStatusZoneInfo'
    CDNCacheStatusZoneInfo:
      title: CDNCacheTopResponseZoneInfo
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/CDNCacheStatusDimensions'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
    CDNCacheTopResponse:
      title: CDNCacheTopResponse
      allOf:
        - $ref: '#/components/schemas/CDNCacheTopResponseData'
    CDNCacheTopResponseData:
      title: CDNCacheTopResponseData
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CDNCacheTopResponseViewer'
    CDNCacheTopResponseViewer:
      title: CDNCacheResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/CDNCacheTopResponseZoneInfo'
    CDNCacheTopResponseZoneInfo:
      title: CDNCacheTopResponseZoneInfo
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        topContentTypes:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupContentType'
        topCountries:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupCountry'
        topDeviceTypes:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupDeviceType'
        topHosts:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupHosts'
        topQueryStrings:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupQueryStrings'
        topStatusCodes:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupStatusCodes'
        topUriPaths:
          type: array
          items:
            $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupUriPaths'
        total:
          type: array
          items:
            $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupContentType:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupContentType
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupContentTypeDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupContentTypeDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupContentTypeDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              type: string
              description: Type of content
              example: jpeg
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupCountry:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupCountry
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupCountryDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupCountryDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupCountryDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              $ref: '#/components/schemas/CountryCode'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupDeviceType:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupDeviceType
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupDeviceTypeDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupDeviceTypeDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupDeviceTypeDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              $ref: '#/components/schemas/DeviceType'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupHosts:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupHosts
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupHostsDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupHostsDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupHostsDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              type: string
              description: Hostname where content was served
              example: rocket.net
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupQueryStrings:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupQueryStrings
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupQueryStringsDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupQueryStringsDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupQueryStringsDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              type: string
              description: Query strings that are used most frequently
              example: '?ver=1.0'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupStatusCodes:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupStatusCodes
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupStatusCodesDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupStatusCodesDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupStatusCodesDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              type: integer
              description: HTTP status codes that are seen most frequently
              example: 200
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupUriPaths:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupUriPaths
      type: object
      allOf:
        - $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsBase'
        - $ref: '#/components/schemas/CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupUriPathsDimensions'
    CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupUriPathsDimensions:
      title: CDNCacheTopResponseZoneHttpRequestsAdaptiveGroupUriPathsDimensions
      type: object
      properties:
        dimensions:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
            metric:
              type: string
              description: URI paths that are requested most frequently
              example: /wp-contents/uploads/2009/04/logo-256x256.png
    CDNRequestsResponse:
      title: CDNRequestsResponse
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CDNRequestsResponseViewer'
        dataTransferTotal:
          description: Total number of bytes served
          type: integer
          example: 4009
        requestsTotal:
          description: Total number of requests served
          type: integer
          example: 4437320
    CDNRequestsResponseEdgeOrigin:
      title: CDNRequestsResponseEdgeOrigin
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CDNRequestsResponseViewerEdgeOrigin'
        serveByEdgeTotal:
          description: Total number of requests served by the Edge
          type: integer
          example: 1864744
        serveByOriginTotal:
          description: Total number of requests served by Origin server
          type: integer
          example: 459595
    CDNRequestsResponseViewer:
      title: CDNRequestsResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/CDNRequestsResponseZone'
    CDNRequestsResponseViewerEdgeOrigin:
      title: CDNRequestsResponseViewerEdgeOrigin
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/CDNRequestsResponseZoneEdgeOrigin'
    CDNRequestsResponseZone:
      title: CDNRequestsResponseZone
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        data_transferTotals:
          type: array
          description: Time-based results of all data transferred
          items:
            $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroups'
        requestsTotals:
          type: array
          description: Time-based results of all requests served by the Origin Server
          items:
            $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroups'
    CDNRequestsResponseZoneEdgeOrigin:
      title: CDNRequestsResponseZoneEdgeOrigin
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        servedByEdge:
          type: array
          description: Time-based results of all requests served by the Edge
          items:
            $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsEdgeOrigin'
        servedByOrigin:
          type: array
          description: Time-based results of all requests served by the Origin Server
          items:
            $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsEdgeOrigin'
    CDNRequestsResponseZoneHttpRequestsAdaptiveGroups:
      title: CDNRequestsResponseZoneHttpRequestsAdaptiveGroups
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
        dimensions:
          $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsDimensions'
    CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsEdgeOrigin:
      title: CDNRequestsResponseZoneHttpRequestsAdaptiveGroups
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsDimensions'
    CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsDimensions:
      title: CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsDimensions
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
        ts:
          $ref: '#/components/schemas/TimeStamp'
    CDNRequestVolumeBySourceResponse:
      title: CDNRequestVolumeBySourceResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - type: object
          properties:
            result:
              $ref: '#/components/schemas/CDNRequestVolumeBySourceResponseResult'
    CDNRequestVolumeBySourceResponseResult:
      title: CDNRequestVolumeBySourceResponseResult
      type: object
      properties:
        countries:
          description: Which countries most of your website requests come from
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: US
        methods:
          description: Which HTTP methods are used for most of your requests
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: GET
        topASNs:
          description: Which autonomous systems (ASNs) direct the most traffic to your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: 15169 - GOOGLE
        topBrowsers:
          description: Which web browsers are most used to view your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: ChromeMobile
        topCacheStatuses:
          description: Which CDN cache status are most often encountered by visitors
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: hit
                    enum:
                      - dynamic
                      - expired
                      - hit
                      - miss
                      - none
        topClientIPs:
          description: Which IP addresses most of the requests to your site come from
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: 1.2.3.4
        topColoCodes:
          description: Which CDN point-of-presence is handling the most requests for your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: CDG
        topDeviceTypes:
          description: Which types of devices are most often visiting your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: desktop
                    enum:
                      - desktop
                      - mobile
                      - tablet
        topEdgeStatusCodes:
          description: The status codes most often returned by our Edge network
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountIntegerMetric'
              - type: object
                properties:
                  metric:
                    type: integer
                    example: 200
        topHTTPProtocolVersions:
          description: Which HTTP protocol versions your visitors are most requesting
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: HTTP/2
                    enum:
                      - HTTP/3
                      - HTTP/2
                      - HTTP/1.1
                      - HTTP/1.0
        topHosts:
          description: Which domain names are most requested for your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: rocket.net
        topOSes:
          description: Which operating systems are most of your visitors using
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: Android
        topOriginStatusCodes:
          description: The status codes most often returned by the origin server hosting your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountIntegerMetric'
              - type: object
                properties:
                  metric:
                    type: integer
                    example: 200
        topPaths:
          description: Which paths (URIs) visitors are requesting the most
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: /blog
        topReferers:
          description: Which domains send the most traffic to your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: google.com
        topUserAgents:
          description: Which User Agents make the most requests to your site
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36
        topXRequestedWith:
          description: Which X-Requested-With headers are being sent the most with requests
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/CountStringMetric'
              - type: object
                properties:
                  metric:
                    type: string
                    example: (Empty X-Requested-With header)
        totalCount:
          description: Total number of requests for this duration
          type: integer
          example: 44503000
    CDNVisitorsResponse:
      title: CDNVisitorsResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/CDNVisitorsResult'
    CDNVisitorsResponseViewer:
      title: CDNVisitorsResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/CDNVisitorsResponseZone'
    CDNVisitorsResponseZone:
      title: CDNVisitorsResponseZone
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        series:
          type: array
          description: Time-based results of all visitors to the site
          items:
            $ref: '#/components/schemas/CDNVisitorsResponseZoneSeries'
    CDNVisitorsResponseZoneSeries:
      title: CDNVisitorsResponseZoneSeries
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/CDNRequestsResponseZoneHttpRequestsAdaptiveGroupsDimensions'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumVisits'
    CDNVisitorsResult:
      title: CDNVisitorsResult
      type: object
      properties:
        visitorsTotal:
          type: integer
        data:
          $ref: '#/components/schemas/CDNVisitorsResponseViewer'
    ChangePermissionsRequest:
      title: ChangePermissionsRequest
      type: object
      required:
        - file
        - permissions
      properties:
        file:
          type: string
          description: Path and name of the file to change permissions on
          example: index.php
        permissions:
          type: string
          description: Linux file permissions such as 0600
          example: '0600'
    ChangePluginStatusPluginRequest:
      title: ChangePluginStatusResult
      type: object
      properties:
        plugin:
          $ref: '#/components/schemas/PluginName'
        status:
          type: string
          description: Activate or Deactivate a Plugin
          enum:
            - activate
            - deactivate
      required:
        - plugin
        - status
    ChangePluginStatusResponse:
      title: ChangePluginStatusResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ChangePluginStatusResult'
    ChangePluginStatusResult:
      title: ChangePluginStatusResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                $ref: '#/components/schemas/PluginName'
              activated:
                type: string
                description: If the plugin was activated (true) or deactivated (false)
                example: 'true'
                enum:
                  - 'true'
                  - 'false'
    ClientIP:
      title: ClientIP
      type: string
      description: IPv4 or IPv6 IP of the client
      example: 76c9:3911:c55f:c32c:7203:4683:0a4c:cd75
    CloneSiteRequest:
      type: object
      properties:
        location:
          type: integer
          description: Which Rocket.net Point of Presence the cloned site should be created at. Use the List Site locations API to get the location ID.
        restricted_location:
          type: integer
          description: If you have dedicated locations, you can use these by ID to add sites at those dedicated locations. (When passed, do not pass location). Use the List Site locations API to get the restricted location ID.
        label:
          type: string
          description: Label for the cloned site
          example: agencypartner1::site1::abcd
        metadata:
          $ref: '#/components/schemas/SiteMetadata'
        template_replacements:
          type: array
          description: Pass keys and values here and they will be replaced in the site's database
          items:
            $ref: '#/components/schemas/TemplateReplacement'
    CloudBackup:
      title: CloudBackup
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID of the backup
          example: 8d8ac610-566d-4ef0-9c22-186b2a5ed793
        includes_files:
          type: boolean
          description: Whether the backup includes all the files from the site
          example: true
        includes_database:
          type: boolean
          description: Whether the backup includes database contents
          example: false
        created_at:
          type: string
          format: date-time
          description: Date and time the backup was created
        label:
          $ref: '#/components/schemas/BackupLabel'
        status:
          $ref: '#/components/schemas/BackupStatus'
        site_id:
          type: integer
          description: ID of the site the backup is a backup of
          example: 8880000888
        size:
          type: integer
          description: Size of the backup in bytes
          example: 1024
        task_id:
          type: string
          format: uuid
          description: ID of the task that was used to create this backup
          example: 60f248b2-5fd3-482a-bf40-845d2e0c909a
        wordpress_metadata:
          $ref: '#/components/schemas/WordPressMetadata'
        zip_file_name:
          type: string
          description: Name of the zip file that was created for this backup
          example: example.com_backup_2025-09-21T12-00-01.zip
    CloudBackupList:
      title: CloudBackupList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/CloudBackup'
    CompressFilesRequest:
      title: CompressFilesRequest
      type: object
      required:
        - sourcefiles
        - destfiles
        - compress_type
      properties:
        sourcefiles:
          type: array
          description: Array of file names to include in the archive
          example:
            - file1.html
            - file2.jpg
            - file3.css
          items:
            type: string
        destfiles:
          type: string
          description: name of the archive
          example: files.tar.gz
        compress_type:
          type: string
          description: Type of compression to use
          example: tar.gz
          enum:
            - bz2
            - gz
            - tar
            - tar.gz
            - tar.bz2
            - zip
    CountInteger:
      title: CountInteger
      type: object
      properties:
        count:
          type: integer
          example: 521
    CountIntegerMetric:
      title: CountIntegerMetric
      type: object
      properties:
        count:
          type: integer
          description: Number of requests
          example: 1456
        countPercentage:
          $ref: '#/components/schemas/CountPercentage'
    CountPercentage:
      title: CountPercentage
      type: number
      description: Percentage of overall requests
      example: 45.23
    CountryCode:
      title: CountryCode
      type: string
      description: 2 character country code
      example: GB
    CountStringMetric:
      title: CountStringMetric
      type: object
      properties:
        count:
          type: integer
          description: Number of requests
          example: 1456
        countPercentage:
          $ref: '#/components/schemas/CountPercentage'
    CreateAccountHostingPlanRequest:
      title: CreateAccountHostingPlanRequest
      type: object
      required:
        - firstname
        - lastname
        - billing_cycle
        - billing_product_id
        - payment_type
      properties:
        firstname:
          type: string
          description: First name used on the billing information for the account
        lastname:
          type: string
          description: Last name used on the billing information for the account
        billing_product_id:
          type: integer
          description: ID of the chosen product
        coupon_code:
          type: string
          description: Coupon Code
        billing_cycle:
          type: string
          enum:
            - Monthly
            - Annual
          example: Monthly
        payment_type:
          type: string
          enum:
            - paypal
            - stripe
          example: paypal
        payment_token:
          type: string
          description: Payment Token for the payment method (if applicable)
          example: seti_1R4heYIpHZfwip1PKzfxrXkO
    CreateAccountHostingPlanResponse:
      title: CreateHostingPlanResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateAccountHostingPlanResult'
    CreateAccountHostingPlanResult:
      title: CreateAccountHostingPlanResult
      type: object
      required:
        - result
      properties:
        result:
          type: object
          required:
            - total
          properties:
            order_id:
              type: integer
              description: ID of the order that was created, not set on a preview
            invoice_id:
              type: integer
              description: ID of the invoice that was created, not set on a preview
            total:
              type: number
              description: Total amount of the invoice
    CreateAdditionalDomainRequest:
      title: CreateAdditionalDomainRequest
      type: object
      required:
        - domain
      properties:
        domain:
          type: string
          description: Name of the additional domain
          example: bestdomain.rocket.net
    CreateBackupRequest:
      title: CreateBackupRequest
      type: object
      required:
        - label
      properties:
        label:
          $ref: '#/components/schemas/BackupLabel'
        backup_directory:
          description: If the backup should include all files from the site
          type: boolean
          example: true
        backup_database:
          description: If the backup should include the database
          type: boolean
          example: false
    CreateBillingAddressRequest:
      title: CreateBillingAddressRequest
      type: object
      required:
        - first_name
        - last_name
        - address_line_1
        - email
        - city
        - state
        - country
        - postal_code
        - telephone
      properties:
        first_name:
          type: string
          description: First name of the billing contact
          example: Rocket
        last_name:
          type: string
          description: Last name of the billing contact
          example: Billing-Contact
        address_line_1:
          type: string
          description: First Address line of the billing contact
          example: 17885 SE Federal Hwy
        address_line_2:
          type: string
          description: Second Address line of the billing contact
          example: Suite 100
        company_name:
          type: string
          description: Company name of the billing contact
          example: Rocket.net
        email:
          type: string
          description: Email address of the billing contact
          example: billing@rocket.net
        city:
          type: string
          description: City of the billing contact
          example: Jupiter
        state:
          type: string
          description: State / Province of the billing contact
          example: FL
        country:
          type: string
          description: Country Code of the billing contact
          example: US
        postal_code:
          type: string
          description: Postal code of the billing contact
          example: '33469'
        telephone:
          type: string
          description: Telephone number of the billing contact
          example: 877-374-0764
        receive_invoice_emails:
          type: boolean
          description: Setting to true will CC this email address on invoice emails
          default: false
          example: false
    CreateBillingAddressResponse:
      title: CreateBillingAddressResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateBillingAddressResult'
    CreateBillingPaymentMethodRequest:
      title: CreateBillingPaymentMethodRequest
      type: object
      required:
        - address_id
        - card_token
      properties:
        active:
          type: boolean
          description: Use this payment method for all automated payments
          example: true
          default: false
        card_token:
          type: string
          description: Tokenized Credit Card string
          example: seti_1R40rbIpHZfwip1PnqHpSQJy
        description:
          type: string
          description: Optional description of the card
          example: Citi Platinum Business
        address_id:
          type: integer
          description: ID of the billing address used for this payment method
          example: 888000888
    CreateBillingCreditCardSetupIntentResponse:
      title: CreateBillingCreditCardSetupIntentResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateBillingCreditCardSetupIntentResult'
    CreateBillingCreditCardSetupIntentResult:
      title: CreateBillingCreditCardSetupIntentResult
      type: object
      properties:
        result:
          type: object
          properties:
            setup_intent:
              type: string
              description: Stripe setup intent
              example: seti_1QtuJoIpHZfwip1PdCiGOP3m_secret_RnVKbIj4EMsIHTt0IUDMSubnEPJlmo9
    CreateBillingPayPalSubscriptionResponse:
      title: CreateBillingPayPalSubscriptionResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateBillingPayPalSubscriptionResult'
    CreateBillingPayPalSubscriptionResult:
      title: CreateBillingPayPalSubscriptionResult
      properties:
        result:
          type: object
          properties:
            paypal_plan_id:
              type: string
              description: Subscription plan ID used for PayPal SDK Buttons
              example: P-8L0089381A309563KM6NJQKY
    CreateCloudBackupRequest:
      title: CreateCloudBackupRequest
      type: object
      required:
        - label
      properties:
        label:
          $ref: '#/components/schemas/BackupLabel'
        includes_files:
          description: If the backup should include all files from the site
          type: boolean
          example: true
        includes_database:
          description: If the backup should include the database
          type: boolean
          example: false
        exclude_paths:
          description: Paths to exclude from the backup
          type: array
          items:
            type: string
            description: Path to exclude
            example: /home/user/public_html/wp-content/uploads
    CreateCloudBackupResponse:
      title: CreateCloudBackupResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateCloudBackupResult'
    CreateCloudBackupResult:
      title: CreateCloudBackupResult
      type: object
      properties:
        result:
          type: object
          properties:
            backup_id:
              type: string
              description: ID of the backup that was created
              example: 8d8ac610-566d-4ef0-9c22-186b2a5ed793
            task_id:
              type: string
              description: ID of the task that was used to create this backup
              example: 60f248b2-5fd3-482a-bf40-845d2e0c909a
            task_level:
              type: string
              description: Level of the task that was used to create this backup
              example: SITE
    CreateCustomerSiteTransferRequest:
      title: CreateCustomerSiteTransferRequest
      type: object
      properties:
        email:
          type: string
          description: Email of the new account to transfer to
          example: newuser@example.com
          format: email
      required:
        - email
    CreateEventRequest:
      title: CreateEventRequest
      type: object
      properties:
        author:
          type: string
        display_name:
          type: string
        user_login:
          type: string
        user_email:
          type: string
        roles:
          type: string
        ip:
          type: string
        type:
          type: string
        label:
          type: string
        action:
          type: string
        description:
          type: string
    CreateFolderRequest:
      title: CreateFolderRequest
      type: object
      required:
        - name
        - path
      properties:
        name:
          type: string
          description: Name of the new folder
          example: awesome_blog_posts
        path:
          type: string
          description: Path of the new folder
          example: /blogs
    CreateFtpAccountRequest:
      title: CreateFtpAccountRequest
      type: object
      required:
        - username
        - password
        - homedir
        - quota
        - domain
      properties:
        username:
          type: string
          description: FTP account username (without domain)
          example: ftpuser
        password:
          $ref: '#/components/schemas/Password'
        homedir:
          $ref: '#/components/schemas/HomeDir'
        quota:
          $ref: '#/components/schemas/QuotaSetter'
        domain:
          type: string
    CreateFtpAccountResponse:
      title: CreateFtpAccountResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateFtpAccountResult'
    CreateFtpAccountResult:
      title: CreateFtpAccountResult
      type: object
      properties:
        result:
          type: object
          properties:
            dir:
              $ref: '#/components/schemas/Dir'
            diskquota:
              oneOf:
                - $ref: '#/components/schemas/Quota'
                - $ref: '#/components/schemas/QuotaUnlimited'
            user:
              $ref: '#/components/schemas/FTPUser'
    CreateSiteRequest:
      title: CreateSiteRequest
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: WordPress Site Title
        location:
          $ref: '#/components/schemas/LocationID'
        restricted_location:
          type: integer
          description: If you have dedicated locations, you can use these by ID to add sites at those dedicated locations. (When passed, do not pass location). Use the List Site locations API to get the restricted location ID.
        admin_username:
          $ref: '#/components/schemas/WordPressAdminUsername'
        admin_password:
          $ref: '#/components/schemas/WordPressAdminPassword'
        admin_email:
          $ref: '#/components/schemas/WordPressAdminEmail'
        multisite:
          $ref: '#/components/schemas/WordPressMultisite'
        template_id:
          description: An optional Site Template ID to use when creating the site
          type: string
          example: 2df39219-f15e-4ba9-82b2-09bf585a19bc
          format: uuid
        install_plugins:
          description: A comma separated list of plugin slugs to install
          type: string
          example: awesome-plugin,great-plugin,ok-plugin
        sub_path:
          type: string
          description: If the site should be installed outside of public_html, which folder (this is rare)
          example: blog
        label:
          $ref: '#/components/schemas/SiteLabel'
        site_type:
          $ref: '#/components/schemas/SiteType'
        static_site:
          type: boolean
          description: 'DEPRECATED: Use site_type instead. When true, a "static" site will be created without any WordPress install'
        metadata:
          $ref: '#/components/schemas/SiteMetadata'
        php_version:
          type: string
          description: PHP version to be used
        template_replacements:
          type: array
          description: If this site is being created from a template, pass keys and values here and they will be replaced in the site's database
          items:
            $ref: '#/components/schemas/TemplateReplacement'
    CreateSiteResponse:
      title: CreateSiteResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/CreateSiteResult'
    CreateSiteResult:
      title: CreateSiteResult
      type: object
      properties:
        result:
          type: object
          properties:
            id:
              type: integer
            domain:
              type: string
    CreateSiteUserPasswordRequest:
      title: CreateSiteUserPasswordRequest
      type: object
      required:
        - password
        - token
      properties:
        password:
          type: string
          description: Password for the site user
          example: password123jh378rg39ho3jpr@#U)@#@UI
        token:
          type: string
          description: Token that allows the password to be set
          example: '1234567890'
    CreateSiteUserRequest:
      title: CreateSiteUserRequest
      type: object
      required:
        - name
        - email
      properties:
        name:
          type: string
          description: Name of the site user
          example: Ms. Site User
        email:
          type: string
          description: Email address of the site user
          example: siteuser@rocket.net
    CreateSiteUserResponse:
      title: CreateSiteUserResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SiteUserResult'
    CreateSiteFromTemplateRequest:
      title: CreateSiteFromTemplateRequest
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: WordPress Site Title
        location:
          type: integer
          description: Which Rocket.net Point of Presence to create the site at
        restricted_location:
          type: integer
          description: If you have dedicated locations, you can use these by ID to add sites at those dedicated locations. (When passed, do not pass location)
        sub_path:
          type: string
          description: If the site should be installed outside of public_html, which folder (this is rare)
          example: blog
        label:
          type: string
          description: Label for the site (can be used to look up sites)
          example: agencypartner1::site1::abcd
        metadata:
          $ref: '#/components/schemas/SiteMetadata'
        template_replacements:
          type: array
          description: If this site is being created from a template, pass keys and values here and they will be replaced in the site's database
          items:
            $ref: '#/components/schemas/TemplateReplacement'
    CreateSiteTemplateRequest:
      title: CreateSiteTemplateRequest
      type: object
      required:
        - name
        - site_id
      properties:
        name:
          type: string
          description: Name of the site template
          example: WooCommerce with SEO Plugins
          minLength: 1
          maxLength: 255
        site_id:
          type: integer
          description: Site ID to build the template from
          example: 8675309
        notes:
          type: string
          description: Notes about the site template
          example: Our traditional WooCommerce site with SEO including X and Y plugins on Z theme.
          minLength: 1
        tags:
          type: array
          items:
            type: string
            minLength: 1
          description: Tags which can be used identify templates
    CreateStagingRequest:
      title: CreateStagingRequest
      type: object
      nullable: true
      properties:
        vanity_domain:
          type: boolean
    CreateUserRequest:
      title: CreateUserRequest
      type: object
      required:
        - firstname
        - lastname
        - email
      properties:
        firstname:
          type: string
          description: User's first name
          example: Rocket
        lastname:
          type: string
          description: User's last name
          example: Customer
        email:
          type: string
          description: User's email address
          example: email@domain.tld
        twofactor_required:
          type: boolean
          default: false
          description: Require this user to enable 2-factor authentication in order to user their account
          example: true
        roles:
          type: array
          description: If passed, the user will have these roles rather than the default (account_user)
          example:
            - user_admin
          items:
            type: string
            enum:
              - account_user
              - billing_admin
              - user_admin
    CreatedAt:
      title: CreatedAt
      type: string
      description: Time stamp of when the record was created
      example: '2024-01-01T02:00:00Z'
    CustomSSLRequest:
      title: CustomSSLRequest
      type: object
      properties:
        domains:
          type: array
          description: a list of domains belonging to this site that this certificate will support
          items:
            type: string
          example:
            - custom-ssl.com
            - www.custom-ssl.com
            - subdomain.custom-ssl.com
        certificate:
          type: string
          description: the ssl certificate to use for each domain
          example: |-
            -----BEGIN CERTIFICATE-----
            MAoGCCqGSM49BAMD...
            -----END CERTIFICATE-----
        key:
          type: string
          description: the certificate private key
          example: |-
            -----BEGIN PRIVATE KEY-----
            MIGHAgEAMBMGByqG...
            -----END PRIVATE KEY-----
      required:
        - domains
        - certificate
        - key
    CustomSSLResponse:
      title: CustomSSLResponse
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: custom ssl record identifier
          example: 1634ccc1-14a2-46b6-b886-95bdcc2efdab
        site_id:
          type: integer
          description: id of the site associated with custom ssl record
          example: 12345
        serial_number:
          type: string
          description: the serial number of this custom ssl certificate
          example: 398afaa14450d29e7a0905519a3e94cd0
        fingerprint:
          type: string
          description: the SHA256 fingerprint of this custom ssl certificate
          example: 1661186b8e38e79f434e4549a2d53f84716cfff7c45d334bbc67c9d41d1e3be6
        issuer:
          type: string
          description: the issuer of this custom ssl certificate
          example: LetsEncrypt
        uploaded_on:
          type: string
          format: date-time
          description: the date this custom ssl certificate was uploaded
          example: '2026-01-07 18:31:22'
        issued_on:
          type: string
          format: date-time
          description: the date this custom ssl certificate was issued
          example: '2026-01-05 20:49:35'
        expires_on:
          type: string
          format: date-time
          description: the date this custom ssl certificate will expire
          example: '2026-03-06 20:49:35'
        domains:
          type: array
          description: the Rocket.net domains that are associated with this custom ssl certificate
          items:
            type: string
          example:
            - custom-ssl.com
            - www.custom-ssl.com
            - subdomain.custom-ssl.com
    CustomerSiteTransfer:
      type: object
      title: CustomerSiteTransfer
      properties:
        transfer_id:
          $ref: '#/components/schemas/TransferID'
        domain:
          type: string
          description: Domain of the site transfer
          example: example.com
        requires_plan_upgrade:
          type: boolean
          description: Whether the transfer requires a plan upgrade so a new site can be added to the account
          example: true
        transferring_user:
          type: object
          properties:
            firstname:
              type: string
              description: First name of the user initiating the transfer
              example: John
            lastname:
              type: string
              description: Last name of the user initiating the transfer
              example: Doe
        transfer_to_user:
          type: object
          properties:
            email:
              type: string
              description: Email of the user the site is being transferred to
              example: newuser@example.com
        transfer_type:
          type: string
          enum:
            - incoming
            - outgoing
          description: Type of site transfer
          example: incoming
        site_id:
          type: integer
          description: ID of the site being transferred
          example: 1234567890
        status:
          type: string
          description: Status of the customer site transfer
          enum:
            - created
            - accepted
            - rejected
            - cancelled
          example: accepted
        created_at:
          type: string
          description: Date and time of when the site transfer was created
          example: '2024-01-01T02:00:00Z'
        updated_at:
          type: string
          description: Date and time of when the site transfer was last updated
          example: '2024-01-01T02:00:00Z'
    CustomerSiteTransferResponse:
      type: object
      title: CustomerSiteTransferResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          $ref: '#/components/schemas/CustomerSiteTransfer'
    DateFrom:
      title: DateFrom
      type: string
      description: Earliest date to show results for. Format YYYY-MM-DD with optional Thh:mm:ss.mmmZ
      example: '2024-01-01T12:01:05.986Z'
    DateTime:
      title: DateTime
      type: string
      description: Date and time of the request
      example: '2024-08-19T20:05:00Z'
    DateTo:
      title: DateTo
      type: string
      description: Latest date to show results for. Format YYYY-MM-DD with optional Thh:mm:ss.mmmZ
      example: '2024-01-31'
    DeauthorizeSSHKeyRequest:
      title: DeauthorizeSSHKeyRequest
      type: object
      properties:
        name:
          type: string
      required:
        - name
    DeleteCloudBackupResponse:
      title: DeleteCloudBackupResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/DeleteCloudBackupResult'
    DeleteCloudBackupResult:
      title: DeleteCloudBackupResult
      type: object
      properties:
        result:
          type: object
          properties:
            id:
              type: string
              description: ID of the backup that was deleted
              example: 8d8ac610-566d-4ef0-9c22-186b2a5ed793
    DeleteFileRequest:
      title: DeleteFileRequest
      type: object
      required:
        - file
      properties:
        file:
          type: string
          description: path and name of the file
          example: file.css
    DeleteFtpAccountRequest:
      title: DeleteFtpAccountRequest
      type: object
      required:
        - username
      properties:
        username:
          $ref: '#/components/schemas/FTPUser'
    DeleteFtpAccountResponse:
      title: DeleteFtpAccountResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/DeleteFtpAccountResult'
    DeleteFtpAccountResult:
      title: DeleteFtpAccountResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/EmptyObject'
    DeletePluginRequest:
      title: DeletePluginRequest
      type: object
      properties:
        plugins:
          type: string
          description: Comma separated list of plugins to delete. Cannot be 'must-use' plugins
          example: akismet,hello
    DeletePluginResponse:
      title: DeletePluginResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/DeletePluginResult'
    DeletePluginResult:
      title: DeletePluginResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Name/Slug of the plugin which was removed
                example: akismet
              note:
                type: string
                description: '''deleted'' if the request was successful or ''plugin not found'' if the plugin could not be found'
                example: deleted
                enum:
                  - deleted
                  - plugin not found
                  - ''
    DeleteSSHKeyRequest:
      title: DeleteSSHKeyRequest
      type: object
      properties:
        name:
          type: string
      required:
        - name
    DeleteThemeRequest:
      title: DeleteThemeRequest
      type: object
      properties:
        themes:
          type: string
    DeleteThemeResponse:
      title: DeleteThemeResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/DeleteThemeResult'
    DeleteThemeResult:
      title: DeleteThemeResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              note:
                type: string
    DeviceType:
      title: DeviceType
      type: string
      description: Device Type
      example: mobile
      enum:
        - desktop
        - mobile
        - tablet
    Dir:
      title: Dir
      description: absolute path to the FTP account document root
      type: string
      example: /home/abcd1234/public_html
    DNSProvider:
      title: DNSProvider
      type: string
      description: Where the DNS records for the domain live
      example: namecheap
    DNSRecord:
      title: DNSRecord
      type: object
      properties:
        name:
          type: string
          description: Name of the DNS record
          example: _acme-challenge.thebestreallylongdomainname.com
        type:
          type: string
          description: Type of DNS record
          enum:
            - A
            - AAAA
            - CNAME
            - TXT
        value:
          type: string
          description: Value of the DNS record
          example: m_K7UGMVceMWPcgPn3zpqEtUV7RpFDBUqvl-yZyAUNU
    DomainAlias:
      title: DomainAlias
      type: object
      properties:
        id:
          type: integer
          description: ID of the domain alias (additional domain)
          example: 1
        base_domain:
          $ref: '#/components/schemas/BaseDomain'
        custom_ssl:
          $ref: '#/components/schemas/CustomSSL'
        certificate_authority:
          $ref: '#/components/schemas/CertificateAuthority'
        display_domain:
          $ref: '#/components/schemas/DisplayDomain'
        domain:
          $ref: '#/components/schemas/Domain'
        domain_id:
          type: integer
          description: ID of the domain alias (additional domain)
          example: 1
        domain_type:
          $ref: '#/components/schemas/DomainType'
        dns_provider:
          $ref: '#/components/schemas/DNSProvider'
        hostname_status:
          $ref: '#/components/schemas/HostnameStatus'
        ssl_status:
          $ref: '#/components/schemas/SSLStatus'
        sub_domain:
          $ref: '#/components/schemas/SubDomain'
        validation_method:
          $ref: '#/components/schemas/DomainValidationMethod'
        validation_records:
          type: array
          items:
            $ref: '#/components/schemas/ValidationRecord'
    DomainAliasResponse:
      title: DomainAliasResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          $ref: '#/components/schemas/DomainAlias'
    DomainValidationMethod:
      title: DomainValidationMethod
      type: string
      description: Validation method to use (http = http, txt = DNS)
      enum:
        - http
        - txt
    DownloadCloudBackupResponse:
      title: DownloadCloudBackupResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/DownloadCloudBackupResult'
    DownloadCloudBackupResult:
      title: DownloadCloudBackupResult
      type: object
      properties:
        result:
          type: object
          properties:
            download_link:
              type: string
              description: Download link for the backup
              example: https://example.r2.cloudflarestorage.com/abcd?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=abcd
    EdgeSettings:
      title: EdgeSettings
      type: object
      properties:
        ai_crawlers:
          $ref: '#/components/schemas/EdgeSettingsAICrawlers'
        logged_in_users:
          $ref: '#/components/schemas/EdgeSettingsLoggedInUsers'
        managed_challenge:
          $ref: '#/components/schemas/EdgeSettingsManagedChallenge'
        user_agent:
          $ref: '#/components/schemas/EdgeSettingsUserAgent'
        woocommerce:
          $ref: '#/components/schemas/EdgeSettingsWooCommerce'
        wp_login:
          $ref: '#/components/schemas/EdgeSettingsWPLogin'
        xmlrpc_protection:
          $ref: '#/components/schemas/EdgeSettingsXMLRPCProtection'
    EdgeSettingsResponse:
      title: GetEdgeSettingsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/EdgeSettingsResult'
    EdgeSettingsResult:
      title: EdgeSettingsResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/EdgeSettings'
    EdgeSettingsAICrawlers:
      title: EdgeSettingsAICrawlers
      type: object
      properties:
        allow:
          $ref: '#/components/schemas/EdgeSettingAllowFalse'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeSettingsLoggedInUsers:
      title: EdgeSettingsLoggedInUsers
      type: object
      properties:
        waf_bypass:
          $ref: '#/components/schemas/EdgeSettingsWAFBypass'
    EdgeSettingsManagedChallenge:
      title: EdgeSettingsManagedChallenge
      type: object
      description: Displays a managed challenge to all users of the site. Useful if you believe your site is under attack.
      properties:
        enabled:
          $ref: '#/components/schemas/EdgeSettingEnabledFalse'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeSettingsUserAgent:
      title: EdgeSettingsUserAgent
      type: object
      properties:
        empty:
          $ref: '#/components/schemas/EdgeSettingsUserAgentEmptySettings'
        go_http_client:
          $ref: '#/components/schemas/EdgeSettingsUserAgentGoHttpClientSettings'
    EdgeSettingsWooCommerce:
      title: EdgeSettingsWooCommerce
      type: object
      properties:
        login_and_registration_protection:
          $ref: '#/components/schemas/EdgeSettingsLoginRegistrationProtection'
    EdgeSettingsWPLogin:
      title: EdgeSettingsWPLogin
      type: object
      properties:
        challenge:
          $ref: '#/components/schemas/EdgeSettingsWPLoginChallenge'
    EdgeSettingsXMLRPCProtection:
      title: EdgeSettingsXMLRPCProtection
      type: object
      description: If xml-rpc.php should be protected by blocking all traffic to it from untrusted sources
      properties:
        enabled:
          $ref: '#/components/schemas/EdgeSettingEnabledTrue'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeStatusCode:
      title: EdgeStatusCode
      type: integer
      description: HTTP status code returned from the Edge
      example: 200
    EmptyObject:
      title: EmptyObject
      description: Empty object
      type: object
      additionalProperties: true
      maxProperties: 0
      example: {}
    EnableShopShieldRequest:
      title: EnableShopShieldRequest
      type: object
      required:
        - uri
      properties:
        uri:
          type: string
          description: The URI that is protected by ShopShield. Must start with a / or the domain such as https://example.com/shop or /shop
          example: /
          default: /
        notify_site_owner:
          type: boolean
          description: Whether to notify the site owner when ShopShield is enabled
          example: false
          default: true
    Error:
      title: Error
      type: object
      properties:
        success:
          $ref: '#/components/schemas/SuccessBoolean'
        errors:
          $ref: '#/components/schemas/Errors'
        messages:
          $ref: '#/components/schemas/Messages'
        result:
          type: object
          properties:
            msg:
              type: string
    Errors:
      title: Errors
      type: array
      items:
        type: string
        description: Array of error codes providing context to the messages. Should an error occur, a unique code may be provided to help support track down issues more quickly. Please provide this code to support when you an experience an error. null or an empty array indicates that no error occurred
        example: bf095f43-72a7-45cc-b4c3-cfbace9695cb
      default: []
    ErrorsEmpty:
      title: ErrorsEmpty
      type: array
      example: []
      items:
        type: string
    ExecuteCliRequest:
      title: ExecuteCliRequest
      type: object
      required:
        - command
      properties:
        command:
          type: string
          description: 'Name of the wp cli command to execute: examples: admin, cache, cap, post, user. i.e. `wp post` gives us `post`'
          example: post
        action:
          type: string
          description: Action to execute. i.e. `wp post meta` gives us `meta`
          example: meta
        value:
          type: string
          description: Value(s) to pass to the command
          example: set 123 _wp_page_template about.php
        params:
          type: string
          description: Additional parameters to pass to the command
          example: '--format=json --skip-plugins --skip-themes'
    ExecuteCliResponse:
      title: ExecuteCliResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ExecuteCliResult'
    ExecuteCliResult:
      title: ExecuteCliResult
      type: object
      properties:
        result:
          type: object
          properties:
            response:
              type: string
    ExecuteWPCLIRequest:
      title: ExecuteCliRequest
      type: object
      required:
        - command
      properties:
        command:
          type: string
          description: The command to execute
          example: user list --format=json --skip-plugins --skip-themes
    ExtractFileRequest:
      title: ExtractFileRequest
      type: object
      required:
        - file
        - destination
      properties:
        file:
          type: string
          description: Name of the archive to extract
          example: backup.tar.gz
        destination:
          type: string
          description: location to extract the archive to
          example: blog_posts
    Event:
      title: Event
      type: object
      properties:
        id:
          type: string
        author:
          type: string
        site_id:
          type: integer
        display_name:
          type: string
        user_login:
          type: string
        user_email:
          type: string
        roles:
          type: string
        ip:
          type: string
        type:
          type: string
        label:
          type: string
        action:
          type: string
        description:
          type: string
        created_at:
          type: string
    EventListResult:
      title: EventListResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/Event'
    EventResponse:
      title: EventResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/EventResult'
    EventResult:
      title: EventResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/Event'
    EventSource:
      type: string
      description: what type of security system intercepted the event
      example: firewallCustom
      enum:
        - firewallCustom
        - firewallManaged
        - ratelimit
        - waf
    File:
      title: File
      type: object
      properties:
        files:
          type: array
          items:
            type: object
            properties:
              humansize:
                type: string
                description: File size in human readable(-ish) form
                example: 4 KB
              file:
                type: string
                description: Name of the file
                example: file1.css
              fullpath:
                type: string
                description: Full path to the file
                example: /home/user2/public_html/file1.css
              ctime:
                type: integer
                description: Time the file was created (unix time)
                example: 1713495598
              absdir:
                type: string
                description: Absolute path to the file
                example: /home/user2/public_html
              size:
                type: integer
                description: File size in bytes
                example: 4096
              nicemode:
                type: string
                description: Human readable linux file permissions
                example: '0600'
              type:
                type: string
                enum:
                  - dir
                  - file
                description: Type of file/directory
                example: file
              path:
                type: string
                description: path to the file
                example: /home/user2/public_html
              mtime:
                type: integer
                description: Time the file was last modified (unix time)
                example: 1714411276
    FileManagerFile:
      title: FileManagerFile
      type: object
      description: Information about a File or Directory
      properties:
        created_at:
          type: string
          description: Time the file was created (human readable)
          example: 2023-12-14 3:11PM
        ctime:
          type: integer
          description: Time the file was created (unix time)
          example: 1713495598
        updated_at:
          type: string
          description: Time the file was last modified (human readable)
          example: 2023-12-14 3:11PM
        mtime:
          type: integer
          description: Time the file was last modified (unix time)
          example: 1714411276
        name:
          type: string
          description: Name of the file or directory
          example: styles.css
        mode:
          type: string
          description: Human readable linux file permissions
          example: '0600'
        type:
          type: string
          enum:
            - dir
            - file
          description: Whether this is a file or directory (dir)
          example: file
        human_size:
          type: string
          description: File size in human readable form
          example: 4 KB
        size:
          type: integer
          description: File size in bytes
          example: 4096
        path:
          type: string
          description: Path to the file/directory (relative to the document root of the site)
          example: wp-content
    FileManagerFilesResult:
      title: ListPluginsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/FileManagerFile'
    FileTotals:
      title: FileTotals
      type: object
      properties:
        totals:
          type: object
          properties:
            files:
              type: integer
              description: Number of files
              example: 10
            folders:
              type: integer
              description: Number of folders
              example: 5
    FirewallEventsAdaptiveGroup:
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsType'
        avg:
          properties:
            __typename:
              type: string
              description: Name of the property
              example: ZoneFirewallEventsAdaptiveGroupsAvg
              enum:
                - ZoneFirewallEventsAdaptiveGroupsAvg
            sampleInterval:
              $ref: '#/components/schemas/SampleInterval'
        count:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsSource'
    FTPAccount:
      title: FTPAccount
      type: object
      properties:
        dir:
          $ref: '#/components/schemas/Dir'
        diskquota:
          oneOf:
            - $ref: '#/components/schemas/Quota'
            - $ref: '#/components/schemas/QuotaUnlimited'
        diskused:
          description: amount of disk space the FTP user has used (in MB)
          type: string
          example: '308.98'
        reldir:
          description: relative path of the FTP account document root
          type: string
          example: public_html
        user:
          $ref: '#/components/schemas/FTPUser'
    FTPAccountList:
      title: FTPAccountList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/FTPAccount'
    FTPUser:
      title: FTPUser
      type: string
      description: FTP account username (with domain)
      example: ftpuser@site.rocket.net
    GetDomainAliasesResponse:
      title: GetDomainAliasesResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/GetDomainAliasesResult'
    GetDomainAliasesResult:
      title: GetDomainAliasesResult
      type: object
      properties:
        result:
          type: object
          properties:
            additional_domains:
              type: array
              items:
                $ref: '#/components/schemas/DomainAlias'
    GetAccountMeResponse:
      title: GetAccountMeResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/AccountInfoResult'
    GetAccountUsageResponse:
      title: GetAccountUsageResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/GetAccountUsageResult'
    GetAccountUsageResult:
      title: GetAccountUsageResult
      type: object
      properties:
        result:
          type: object
          properties:
            usage:
              type: array
              items:
                type: object
                properties:
                  visitors:
                    type: integer
                  disk:
                    type: integer
                  bandwidth:
                    type: integer
                  site_id:
                    type: integer
            totals:
              type: object
              properties:
                visitors:
                  type: integer
                disk:
                  type: integer
                bandwidth:
                  type: integer
            limits:
              type: object
              properties:
                bandwidth:
                  type: integer
                disk:
                  type: integer
                visitors:
                  type: integer
    GetCloudBackupResponse:
      title: GetCloudBackupResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/GetCloudBackupResult'
    GetCloudBackupResult:
      title: GetCloudBackupResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/CloudBackup'
    GetPasswordProtectionResponse:
      title: GetPasswordProtectionResult
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/GetPasswordProtectionResult'
    GetPasswordProtectionResult:
      title: GetPasswordProtectionResult
      type: object
      properties:
        result:
          type: object
          properties:
            enabled:
              type: boolean
    GetShopShieldURIResponse:
      title: GetShopShieldURIResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/GetShopShieldURIResult'
    GetShopShieldURIResult:
      title: GetShopShieldURIResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/ShopShieldURI'
    GetSiteUsageResponse:
      title: GetSiteUsageResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/GetSiteUsageResult'
    GetSiteUsageResult:
      title: GetSiteUsageResult
      type: object
      properties:
        result:
          type: object
          properties:
            totals:
              type: object
              properties:
                visitors:
                  type: integer
                disk:
                  type: integer
                bandwidth:
                  type: integer
    GraphDataPoint:
      title: GraphDataPoint
      type: object
      properties:
        count:
          type: integer
          example: 521
        ts:
          $ref: '#/components/schemas/TimeStamp'
    HomeDir:
      title: HomeDir
      type: string
      description: Document root for the FTP account (relative the user's home directory)
      example: public_html
    HostnameStatus:
      title: HostnameStatus
      type: string
      description: Status of the domain (moved will require re-creation by changing the domain)
      enum:
        - active
        - active_redeploying
        - blocked
        - deleted
        - moved
        - pending
        - pending_blocked
        - pending_deletion
        - pending_migration
        - pending_provisioned
        - provisioned
        - test_active
        - test_active_apex
        - test_blocked
        - test_failed
        - test_pending
    HostingPlan:
      title: HostingPlan
      description: Information about the account's current hosting plan
      type: object
      properties:
        name:
          type: string
          description: Name of the hosting plan
          example: Starter
        type:
          type: string
          enum:
            - Agency
            - Managed
            - Enterprise
          description: Hosting plan category
        product_id:
          type: integer
          description: ID of the product that was selected
          example: 880088
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        next_billing_date:
          type: string
          description: Time stamp of when the next payment is due
          example: '2024-01-01T02:00:00Z'
        status:
          type: string
          enum:
            - Active
            - Cancelled
            - Completed
            - Pending
            - Suspended
            - Terminated
        pricing:
          $ref: '#/components/schemas/ProductPricing'
    HostingPlanResult:
      title: HostingPlanResult
      type: object
      description: Information about the hosting plan and any addons
      properties:
        result:
          type: object
          properties:
            current_plan:
              $ref: '#/components/schemas/HostingPlan'
            addons:
              type: array
              items:
                $ref: '#/components/schemas/Addon'
    HTTPHost:
      title: HTTPHost
      type: string
      description: HTTP host requested by the client
      example: rocket.net
    HTTPMethod:
      title: HTTPMethod
      type: string
      description: HTTP method of the request
      example: GET
    IDResponse:
      title: IDResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/IDResult'
    IDResult:
      title: IDResult
      type: object
      properties:
        result:
          type: object
          properties:
            id:
              type: integer
    ImportSSHKeyRequest:
      title: ImportSSHKeyRequest
      type: object
      properties:
        name:
          type: string
          description: ssh key filename
          example: id_rsa.pub
        key:
          type: string
          description: content of ssh key
          example: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGx6kfg1/JTqGu4AeALa7xV/Vw22KF82zKubXubwmuCU
        passphrase:
          type: string
          description: not needed for public ssh key import
          example: abracadabra
      required:
        - name
        - key
    InstallPluginsRequest:
      title: InstallPluginsRequest
      type: object
      properties:
        plugins:
          type: string
          description: Comma separated list of plugins to install. Cannot be combined with 'custom_url'
          example: akismet,hello
        activate:
          type: boolean
          description: If all the plugins that are being installed should be activated
          example: false
          default: false
        custom_url:
          type: string
          description: If a plugin should be downloaded from a custom URL rather than the wordpress.org plugin library, this is the download URL. Cannot be combined with 'plugins'
    InstallPluginsResponse:
      title: InstallPluginsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/InstallPluginsResult'
    InstallPluginsResult:
      title: InstallPluginsResult
      type: object
      properties:
        result:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/WordPressPluginInstall'
              - $ref: '#/components/schemas/WordPressPluginInstallNote'
    InstallThemesRequest:
      title: InstallThemesRequest
      type: object
      properties:
        themes:
          type: string
        activate:
          type: boolean
        custom_url:
          type: string
    InstallThemesResponse:
      title: InstallThemesResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/InstallThemesResult'
    InstallThemesResult:
      title: InstallThemesResult
      type: object
      properties:
        result:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/WordPressThemeInstall'
              - $ref: '#/components/schemas/WordPressThemeInstallNote'
    InviteSiteUserResponse:
      title: InviteSiteUserResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/InviteSiteUserResult'
    InviteSiteUserResult:
      title: InviteSiteUserResult
      type: object
      properties:
        result:
          type: object
          properties:
            success:
              type: boolean
              description: True if the user was invited successfully, false otherwise
              example: true
            id:
              type: integer
              description: ID of the user that was invited
              example: 1234567890
    InviteSiteUserRequest:
      title: InviteSiteUserRequest
      type: object
      required:
        - name
        - email
      properties:
        name:
          type: string
          description: Name of the site user
          example: Ms. Site User
        email:
          type: string
          description: Email address of the site user
          example: siteuser@rocket.net
    IP:
      title: IP
      type: string
      description: IP address related to the request
      example: 1.2.3.4
    ListAccessLogsResponse:
      title: ListAccessLogsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/ListAccessLogsResult'
    ListAccessLogsResult:
      title: ListAccessLogsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/AccessLogEntry'
    ListAccountTasksResponse:
      title: ListAccountTasksResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/ListAccountTasksResult'
    ListAccountTasksResult:
      title: ListAccountTasksResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/AccountTask'
    ListAllLocationsResponse:
      title: ListAllLocationsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ListAllLocationsResult'
    ListAllLocationsResult:
      title: ListAllLocationsResult
      type: object
      properties:
        result:
          type: object
          properties:
            locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
            restricted_locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
    ListAutomatedBackupResponse:
      title: ListAutomatedBackupResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/AutomatedBackupList'
    ListBackupResponse:
      title: ListBackupResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/ManualBackupList'
    ListCloudBackupsResponse:
      title: ListCloudBackupsResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/CloudBackupList'
    ListEventsResponse:
      title: ListEventsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/EventListResult'
    ListFileManagerFilesResponse:
      title: ListFilesResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/FileManagerFilesResult'
    ListFilesResponse:
      title: ListFilesResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ListFilesResult'
    ListFilesResult:
      title: ListFilesResult
      type: object
      properties:
        result:
          allOf:
            - $ref: '#/components/schemas/File'
            - $ref: '#/components/schemas/FileTotals'
    ListFtpAccountsResponse:
      title: ListFtpAccountsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/FTPAccountList'
    ListLocationsResponse:
      title: ListLocationsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ListLocationsResult'
    ListLocationsResult:
      title: ListLocationsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/Location'
    ListPasswordProtectionUsersResponse:
      title: ListPasswordProtectionUsersResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/ListPasswordProtectionUsersResult'
    ListPasswordProtectionUsersResult:
      title: ListPasswordProtectionUsersResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/PasswordProtectionUserList'
    ListPluginsResponse:
      title: ListPluginsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/ListPluginsResult'
    ListPluginsResult:
      title: ListPluginsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/Plugin'
    ListShopShieldURIsResponse:
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/ListShopShieldURIsResult'
    ListShopShieldURIsResult:
      title: ListShopShieldURIsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/ShopShieldURI'
    ListSitesResponse:
      title: ListSitesResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/SiteDetails'
    ListSiteSiteUsersResponse:
      title: ListSiteUserSitesResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/SiteUsersList'
    ListSiteTemplatesResponse:
      title: ListSiteTemplatesResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/ListSiteTemplatesResult'
    ListSiteTemplatesResult:
      title: ListSiteTemplatesResult
      type: object
      properties:
        result:
          type: object
          properties:
            site_templates:
              type: array
              items:
                $ref: '#/components/schemas/SiteTemplate'
    ListSSHKeysResponse:
      title: ListSSHKeysResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/SSHKeyList'
    ListTasksResponse:
      title: ListTasksResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/ListTasksResult'
    ListTasksResult:
      title: ListTasksResult
      type: object
      properties:
        result:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/SiteTask'
              - $ref: '#/components/schemas/SiteTaskMetaDataDict'
    ListThemesResponse:
      title: ListThemesResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/ListThemesResult'
    ListThemesResult:
      title: ListThemesResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/Theme'
    ListUsersResponse:
      title: ListUsersResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/UserList'
    ListWAFEventsResponse:
      title: WAFEventsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/ListWAFEventsResult'
    ListWAFEventsResult:
      title: ListWAFEventsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/WAFEvent'
    Location:
      title: Location
      type: object
      properties:
        id:
          type: integer
          description: ID of the location
          example: 1
        location:
          type: string
          description: Name of the location
          example: US - East
        region:
          type: string
          description: Region the location is in
          example: United States
        supported_site_types:
          type: array
          items:
            $ref: '#/components/schemas/PartnerSiteType'
          description: Supported site types for the location
          example:
            - 0
            - 1
    LoginRequest:
      title: LoginRequest
      type: object
      required:
        - username
        - password
      properties:
        username:
          type: string
          description: Username to use for authentication
          example: user@rocket.net
        password:
          type: string
          description: Password to use for authentication
          example: Str0ngP@ssw0rd!58793897379-password
    LoginResponse:
      title: LoginResponse
      type: object
      properties:
        token:
          type: string
          description: JWT token to use for authenticated requests
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
    MainDomain:
      title: MainDomain
      type: object
      properties:
        active_wordpress_domain:
          type: string
          description: The name of the domain which is active in WordPress (WordPress can only have one domain)
          enum:
            - cdn_url
            - live_domain
        base_domain:
          $ref: '#/components/schemas/BaseDomain'
        custom_ssl:
          $ref: '#/components/schemas/CustomSSL'
        certificate_authority:
          $ref: '#/components/schemas/CertificateAuthority'
        display_domain:
          $ref: '#/components/schemas/DisplayDomain'
        domain:
          $ref: '#/components/schemas/Domain'
        domain_type:
          $ref: '#/components/schemas/DomainType'
        dns_provider:
          $ref: '#/components/schemas/DNSProvider'
        hostname_status:
          $ref: '#/components/schemas/HostnameStatus'
        ssl_status:
          $ref: '#/components/schemas/SSLStatus'
        show_go_live:
          type: integer
          description: If the UI should show Go Live instructions
          enum:
            - 0
            - 1
        sub_domain:
          $ref: '#/components/schemas/SubDomain'
        validation_method:
          $ref: '#/components/schemas/DomainValidationMethod'
        validation_records:
          type: array
          items:
            $ref: '#/components/schemas/ValidationRecord'
    MainDomainDNSInfo:
      title: MainDomainDNSInfo
      type: object
      properties:
        hostname:
          type: string
          description: The hostname of the domain
          example: example.com
        domain_status:
          $ref: '#/components/schemas/HostnameStatus'
        ssl_status:
          $ref: '#/components/schemas/SSLStatus'
        validation_method:
          $ref: '#/components/schemas/DomainValidationMethod'
        validation_errors:
          type: array
          description: Errors that occurred when validating the domain
          items:
            type: string
            description: Error that occurred when validating the domain
            example: The authority has rate limited these domains. Please wait for the rate limit to expire (17 Oct 25 21:18 UTC) or try another authority.
        ssl_rate_limit:
          type: object
          nullable: true
          properties:
            limited:
              type: boolean
              description: Whether the domain is rate limited by the certificate authority
              example: true
            certificate_authority:
              $ref: '#/components/schemas/CertificateAuthority'
            expires_at:
              type: string
              description: The date and time the rate limit will expire
              example: '2025-10-25T21:18:00Z'
        expected_dns_records:
          type: array
          description: DNS records that are expected expected for the domain to be validated and SSL to be issued
          items:
            $ref: '#/components/schemas/DNSRecord'
        found_dns_records:
          type: array
          description: DNS records that currently exist for the domain
          items:
            $ref: '#/components/schemas/DNSRecord'
        records_to_remove:
          type: array
          description: DNS records that will need to be removed before the domain can be validated and SSL can be issued
          items:
            $ref: '#/components/schemas/DNSRecord'
    MainDomainResponse:
      title: MainDomainResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          $ref: '#/components/schemas/MainDomain'
    MainDomainStatus:
      title: MainDomainStatus
      type: object
      properties:
        maindomain:
          $ref: '#/components/schemas/MainDomainDNSInfo'
        alternate_maindomain:
          anyOf:
            - $ref: '#/components/schemas/MainDomainDNSInfo'
            - $ref: '#/components/schemas/EmptyObject'
          nullable: true
        additional_domains:
          type: array
          description: Additional domains that are associated with the site
          items:
            $ref: '#/components/schemas/MainDomainDNSInfo'
        errors:
          type: array
          description: Errors that occurred when checking DNS records
          items:
            type: string
            description: Error that occurred when checking DNS records
    MainDomainStatusResponse:
      title: MainDomainStatusResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/MainDomainStatusResult'
    MainDomainStatusResult:
      title: MainDomainStatusResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/MainDomainStatus'
    ManualBackup:
      title: ManualBackup
      type: object
      properties:
        id:
          type: integer
          description: ID of the backup
          example: 8880000888
        label:
          $ref: '#/components/schemas/BackupLabel'
        download_link:
          type: string
          description: Link that can be used to download the backup
        status:
          $ref: '#/components/schemas/BackupStatus'
        created:
          type: string
          description: Date and time that the backup was created at (UTC)
          example: '2024-01-01T12:01:05.986Z'
        site_id:
          type: integer
          description: ID of the site the backup is a backup of
          example: 8880000888
        task_id:
          type: string
          description: ID of the task that was used to create this backup
          example: 60f248b2-5fd3-482a-bf40-845d2e0c909a
    ManualBackupList:
      title: ManualBackupList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/ManualBackup'
    Messages:
      title: Messages
      type: array
      items:
        description: Error message about the request (if there was an error)
        type: string
        example: You cannot perform this action because the site is currently locked.
      default: []
    MessagesEmpty:
      title: MessagesEmpty
      type: array
      nullable: true
      example: []
      items:
        description: Error message about the request (if there was an error)
        type: string
    Metadata:
      title: Metadata
      type: object
      properties:
        metadata:
          type: object
          properties:
            page:
              type: integer
              description: Page number of the results
              example: 1
            page_size:
              type: integer
              description: Number of results per page
              example: 10
            total:
              type: integer
              description: Total number of results
              example: 150
            sort:
              type: string
              description: Sorting criteria
            direction:
              type: string
              enum:
                - asc
                - desc
              description: Sorting direction
    SSHKeyResponse:
      title: SSHKeyResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SSHKeyResult'
    SSHKeyResult:
      title: SSHKeyResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/SSHKey'
    NullType:
      title: NullType
      description: Null type for use with anyOf when null is a valid option
      enum:
        - null
    OriginHTTPStatusCode:
      title: OriginHTTPStatusCode
      type: integer
      description: Origin HTTP status code (0 if origin was not contacted)
      example: 0
    Page:
      title: Page
      description: Page of results to include (default = 1)
      type: integer
      default: 1
      minimum: 1
    Password:
      title: Password
      type: string
      description: Password for the FTP account
      example: R3@llyStr0ng!P@55w0rd_123456
    PasswordProtectionUser:
      title: PasswordProtectionUser
      type: object
      properties:
        user_id:
          type: string
          description: ID of the user
          example: '9'
        username:
          $ref: '#/components/schemas/PasswordProtectionUsername'
    PasswordProtectionUserList:
      title: PasswordProtectionUserList
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/PasswordProtectionUser'
    PasswordProtectionUsername:
      title: PasswordProtectionUsername
      description: username who can access the site while password protection is turned on
      type: string
      example: secretuser
    PasswordStrengthRequest:
      title: PasswordStrengthRequest
      type: object
      properties:
        password:
          type: string
          description: Password to check the strength of
          example: R3@llyStr0ng!P@55w0rd_123456
    PasswordStrengthResponse:
      title: PasswordStrengthResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/PasswordStrengthResult'
    PatchEdgeSettingsRequest:
      title: PatchEdgeSettingsRequest
      type: object
      description: Edge Settings to update
      properties:
        ai_crawlers:
          $ref: '#/components/schemas/EdgeSettingsAICrawlers'
        logged_in_users:
          $ref: '#/components/schemas/EdgeSettingsLoggedInUsers'
        managed_challenge:
          $ref: '#/components/schemas/EdgeSettingsManagedChallenge'
        user_agent:
          $ref: '#/components/schemas/EdgeSettingsUserAgent'
        woocommerce:
          $ref: '#/components/schemas/EdgeSettingsWooCommerce'
        wp_login:
          $ref: '#/components/schemas/EdgeSettingsWPLogin'
        xmlrpc_protection:
          $ref: '#/components/schemas/EdgeSettingsXMLRPCProtection'
    PatchMainDomainPrefixRequest:
      title: PatchMainDomainPrefixRequest
      type: object
      properties:
        www:
          type: boolean
          description: Use www.$domain rather than $domain
          example: true
    PatchMainDomainRequest:
      title: PatchMainDomainRequest
      type: object
      properties:
        domain:
          description: Domain name to update should you wish to change the maindomain that is not the primary maindomain
          type: string
          example: www.maindomain.com
        validation_method:
          $ref: '#/components/schemas/DomainValidationMethod'
        hide_go_live:
          type: integer
          description: Hide the Go Live information in the UI now that Go Live is complete
          enum:
            - 0
            - 1
        certificate_authority:
          $ref: '#/components/schemas/AvailableCertificateAuthority'
    PatchMainDomainResponse:
      title: PatchMainDomainResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/PatchMainDomainResult'
    PatchMainDomainResult:
      title: PatchMainDomainResult
      type: object
      properties:
        result:
          type: object
          properties:
            validation_records:
              type: array
              items:
                $ref: '#/components/schemas/ValidationRecord'
            certificate_authority:
              $ref: '#/components/schemas/CertificateAuthority'
            hide_go_live:
              type: boolean
              description: Hide the Go Live information in the UI now that Go Live is complete
              example: false
            validation_method:
              $ref: '#/components/schemas/DomainValidationMethod'
    PathResponse:
      title: PathResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/PathResult'
    PathResult:
      title: PathResult
      type: object
      properties:
        result:
          type: object
          properties:
            success:
              type: boolean
              description: Whether the operation was successful
              example: true
            path:
              type: string
              description: Path to the file
              example: wp-content/plugins
    PerPage:
      title: PerPage
      description: How many results to include in each page (default = 10)
      type: integer
      default: 10
      minimum: 1
      maximum: 1000
    Plugin:
      title: Plugin
      type: object
      properties:
        name:
          $ref: '#/components/schemas/PluginName'
        status:
          type: string
          description: Plugin status (must-use plugins cannot be deleted, dropin plugins must be deleted via deleting the file)
          enum:
            - active
            - dropin
            - inactive
            - must-use
        update:
          type: string
          description: If the plugin has any updates available
          example: none
          enum:
            - available
            - none
        update_version:
          $ref: '#/components/schemas/UpdateVersion'
        version:
          $ref: '#/components/schemas/PluginVersion'
        title:
          $ref: '#/components/schemas/PluginTitle'
    PluginName:
      title: PluginName
      type: string
      description: Plugin name/slug
      example: akismet
    PluginTitle:
      title: PluginTitle
      type: string
      description: Title of the plugin
      example: 'Akismet Anti-spam: Spam Protection'
    PluginVersion:
      title: PluginVersion
      type: string
      description: Version of the plugin that is installed
      example: 5.3.3
    PMALoginResponse:
      title: PMALoginResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/PMALoginResult'
    PMALoginResult:
      title: PMALoginResult
      type: object
      properties:
        result:
          type: object
          properties:
            phpmyadmin_sign_on_url:
              type: string
    ProductPricing:
      title: ProductPricing
      type: object
      properties:
        billing_cycle_type:
          type: string
          description: Type of billing cycle (only recurring supported at present)
          example: recurring
          default: recurring
        billing_cycle:
          type: string
          description: How often payment is due
          enum:
            - Annual
            - Bi-Annual
            - Monthly
            - Quarterly
            - Semi-Annually
            - Tri-Annual
            - Free Account
          example: Monthly
        cost:
          type: number
          description: Price for the billing cycle
          example: 30
        currency:
          type: string
          description: Currency code in which the payments will be calculated
          example: USD
    PurgeCacheRequest:
      title: PurgeCacheRequest
      type: object
      properties:
        files:
          type: array
          items:
            type: string
        tags:
          type: array
          items:
            type: string
    PurgeCacheResponse:
      title: PurgeCacheResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/PurgeCacheResult'
    PurgeCacheResult:
      title: PurgeCacheResult
      type: object
      properties:
        result:
          type: object
          properties:
            status:
              type: string
    PutMainDomainRequest:
      title: PutMainDomainRequest
      type: object
      properties:
        domain:
          description: Site's new domain name
          type: string
          example: newdomain.rocket.net
        active_wordpress_domain:
          description: 'Switch between the Live domain name and CDN URL. WARNING: WordPress can only have 1 URL and this will break your live site if you switch to CDN URL'
          type: string
          enum:
            - cdn_url
            - live_domain
        remove_live_domain:
          description: 'Use this in conjunction with `active_wordpress_domain` set to `cdn_url` to revert this site back to a cdn_url from live domain. Warning: This will cause the live domain to no longer function and will remove all additional domains'
          type: boolean
          example: false
          default: false
        convert_addon_to_maindomain:
          description: Use this to convert an addon domain to the maindomain. The `domain` passed will be converted from an addon domain to the maindomain and the existing maindomain will be removed.
          type: boolean
          example: false
          default: false
    Quota:
      title: Quota
      type: integer
      description: FTP disk space quota in MB (unlimited = unlimited)
      example: 500
      default: 0
    QuotaUnlimited:
      title: QuotaUnlimited
      type: string
      description: FTP disk space quota in MB (0 or unlimited = unlimited)
      enum:
        - unlimited
    RayID:
      title: RayID
      type: string
      description: Unique Request ID
      example: 8b5cc1855d86842a
    RecoveryPoint:
      title: RecoveryPoint
      type: string
      description: ID of the backup
      example: 6584164ed698071fa305ed4a
    Referer:
      title: Referer
      type: string
      description: Page that referred the user to this one
      example: https://rocket.net
    ReportingDuration:
      title: ReportingDuration
      description: Duration that the listed data is for (m = minutes, h = hours, d = days)
      type: string
      example: 7d
      enum:
        - 30m
        - 1h
        - 6h
        - 12h
        - 24h
        - 72h
        - 7d
        - 30d
    ResetSiteUserPasswordRequest:
      title: ResetSiteUserPasswordRequest
      type: object
      required:
        - email
      properties:
        email:
          type: string
    ResponseViewerType:
      title: ResponseViewerType
      type: string
      example: viewer
      description: name of the property
      enum:
        - viewer
    ResponseZoneType:
      title: ResponseZoneType
      type: string
      example: zone
      description: name of the property
      enum:
        - zone
    RestoreAutomatedBackupFilesRequest:
      title: RestoreAutomatedBackupFilesRequest
      type: object
      description: Options when restoring site's files from an automated backup
      required:
        - restore_type
      properties:
        restore_type:
          type: string
          description: Whether to restore all files (full) or specific files (partial)
          enum:
            - full
            - partial
        files:
          type: array
          description: File paths to restore
          items:
            type: string
            description: File path to restore
            example: wp-content/themes
    RestoreBackupRequest:
      title: RestoreBackupRequest
      type: object
      properties:
        backup_directory:
          type: boolean
          description: Whether to restore the files from the backup
          example: true
        backup_database:
          type: boolean
          description: Whether to restore the database from the backup
          example: false
    RestoreCloudBackupRequest:
      title: RestoreCloudBackupRequest
      type: object
      required:
        - includes_files
        - includes_database
      properties:
        includes_files:
          type: boolean
          description: Whether to restore the files from the backup
          example: true
        includes_database:
          type: boolean
          description: Whether to restore the database from the backup
          example: false
        restore_paths:
          type: array
          description: If specified, only the files in these paths will be restored (requires includes_files to be true). Paths are relative to /home/$user
          items:
            type: string
            description: Path to restore relative to /home/$user
            example: public_html/wp-content/themes
    SampleInterval:
      title: SampleInterval
      type: number
      example: 3.8457300275482096
    SaveFileRequest:
      title: SaveFileRequest
      type: object
      required:
        - file
        - path
        - content
      properties:
        file:
          type: string
          description: Name of the file
          example: plugin.php
        path:
          type: string
          description: Path to the file
          example: wp-content/plugins
        content:
          type: string
          description: Content of the file
          example: <?php echo 'Hello, world!'; ?>
    SearchParamDomain:
      type: string
      description: search string to match the domain by
      example: rocket
    SearchParamSearchDomainLabel:
      type: string
      description: search string to match either tha domain or label by
      example: best site
    SearchPluginsResponse:
      title: SearchPluginsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/SearchPluginsResult'
    SearchPluginsResult:
      title: SearchPluginsResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                $ref: '#/components/schemas/PluginTitle'
              status:
                type: string
                description: Plugin status
                enum:
                  - active
                  - inactive
                  - not_installed
              update:
                type: string
                description: Date of the last plugin update
                example: 2024-08-05 2:02pm GMT
              version:
                type: string
                description: Latest plugin version
                example: 5.3.3
              icons:
                type: object
                description: Icons of various sizes
                properties:
                  1x:
                    type: string
                    description: Link to a 128x128px plugin icon
                    example: https://ps.w.org/akismet/assets/icon-128x128.png?rev=2818463
                  2x:
                    type: string
                    description: Link to a 256x256px plugin icon
                    example: https://ps.w.org/akismet/assets/icon-256x256.png?rev=2818463
              slug:
                $ref: '#/components/schemas/PluginName'
              rating:
                type: integer
                description: Numerical rating of the plugin (out of 100)
                example: 94
              num_ratings:
                type: integer
                description: Number of ratings
                example: 1022
              downloaded:
                type: integer
                description: Number of times the plugin has been downloaded
                example: 328951547
              homepage:
                type: string
                description: Link to the plugin's home page
                example: https://akismet.com/
              short_description:
                type: string
                description: Author's short description of the plugin
                example: The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.
              description:
                type: string
                description: HTML description of the plugin from the author
                example: '<p>The best anti-spam protection to block spam comments and spam in a contact form. The most trusted antispam solution for WordPress and WooCommerce.</p> <p>Akismet checks your comments and contact form submissions against our global database of spam to prevent your site from publishing malicious content. You can review the comment spam it catches on your blog&#8217;s &#8220;Comments&#8221; admin screen.</p> <p>Major features in Akismet include:</p> <ul> <li>Automatically checks all comments and filters out the ones that look like spam.</li> <li>Each comment has a status history, so you can easily see which comments were caught or cleared by Akismet and which were spammed or unspammed by a moderator.</li> <li>URLs are shown in the comment body to reveal hidden or misleading links.</li> <li>Moderators can see the number of approved comments for each user.</li> <li>A discard feature that outright blocks the worst spam, saving you disk space and speeding up your site.</li> </ul> <p>PS: You&#8217;ll be prompted to get an Akismet.com API key to use it, once activated. Keys are free for personal blogs; paid subscriptions are available for businesses and commercial sites.</p> '
              active_installs:
                type: integer
                description: Number of current installations of this plugin
                example: 1000000
    SearchThemesResponse:
      title: SearchThemesResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/SearchThemesResult'
    SearchThemesResult:
      title: SearchThemesResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                $ref: '#/components/schemas/ThemeName'
              status:
                type: string
                description: Status of the theme
                enum:
                  - active
                  - inactive
                  - not_installed
                example: not_installed
              version:
                type: string
                description: Latest theme version
                example: '2.5'
              title:
                type: string
                description: Title of the theme
                example: Twenty Twenty-One
              screenshot_url:
                type: string
                description: URL showing a screenshot of the theme
                example: //ts.w.org/wp-content/themes/twentytwentyone/screenshot.png?ver=2.4
              preview_url:
                type: string
                description: URL to preview a working version of the theme
                example: https://wp-themes.com/twentytwentyone/
              description:
                type: string
                description: Description of the theme from its author
                example: Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.
    SetMainDomainRequest:
      title: SetMainDomainRequest
      type: object
      properties:
        domain:
          description: Site's domain name
          type: string
          example: bestdomain.rocket.net
        keep_cdn_url:
          description: When set, DNS records for the live domain will be returned but the WordPress install will stay on the CDN URL (WordPress can only have one domain). This is useful for testing the site before going live while setting TXT records for SSL and Hostname validation
          type: boolean
          example: false
          default: false
    Settings:
      title: Settings
      type: object
      properties:
        current_php_version:
          type: string
          description: Current PHP version the site uses
          enum:
            - '5.6'
            - '7.0'
            - '7.2'
            - '7.3'
            - '7.4'
            - '8.0'
            - '8.1'
            - '8.2'
            - '8.3'
            - '8.4'
          default: '7.4'
        wp_activity_log:
          type: integer
          description: 'Control WordPress Activity Log: 0 - No activity logging, 1 - Activity logging'
          enum:
            - 0
            - 1
          default: 0
        wp_admin_sso_default_user_id:
          type: integer
          description: The ID of the default wp-admin SSO user
          minimum: 1
          example: 3
        wp_core_auto_updates:
          type: integer
          description: 'Control WordPress Core Auto-Updates: 0 - No auto-updates, 1 - Update all versions, 2 - Update minor/patch versions only'
          enum:
            - 0
            - 1
            - 2
          default: 1
        wp_theme_auto_updates:
          type: integer
          enum:
            - 0
            - 1
          default: 1
        wp_plugin_auto_updates:
          type: integer
          enum:
            - 0
            - 1
          default: 1
        ssh_access:
          type: integer
          enum:
            - 0
            - 1
          default: 0
    SettingsSchemaResponse:
      title: SettingsSchemaResponse
      type: object
      description: Schema of all possible settings for the site
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          type: object
          properties:
            current_php_version:
              type: object
              properties:
                description:
                  $ref: '#/components/schemas/SettingsSchemaOptionDescription'
                options:
                  $ref: '#/components/schemas/SettingsSchemaOptionsString'
            wp_activity_log:
              type: object
              properties:
                description:
                  $ref: '#/components/schemas/SettingsSchemaOptionDescription'
                options:
                  $ref: '#/components/schemas/SettingsSchemaOptionsInteger'
            wp_core_auto_updates:
              type: object
              properties:
                description:
                  $ref: '#/components/schemas/SettingsSchemaOptionDescription'
                options:
                  $ref: '#/components/schemas/SettingsSchemaOptionsInteger'
            wp_plugin_auto_updates:
              type: object
              properties:
                description:
                  $ref: '#/components/schemas/SettingsSchemaOptionDescription'
                options:
                  $ref: '#/components/schemas/SettingsSchemaOptionsInteger'
            wp_theme_auto_updates:
              type: object
              properties:
                description:
                  $ref: '#/components/schemas/SettingsSchemaOptionDescription'
                options:
                  $ref: '#/components/schemas/SettingsSchemaOptionsInteger'
            ssh_access:
              type: object
              properties:
                description:
                  $ref: '#/components/schemas/SettingsSchemaOptionDescription'
                options:
                  $ref: '#/components/schemas/SettingsSchemaOptionsInteger'
    SettingsSchemaOptionsString:
      title: SettingsSchemaOptionsString
      type: array
      items:
        type: object
        properties:
          value:
            type: string
          label:
            type: string
    SettingsSchemaOptionsInteger:
      title: SettingsSchemaOptionsInteger
      type: array
      items:
        type: object
        properties:
          value:
            type: integer
          label:
            type: string
    SettingsSchemaOptionDescription:
      title: SettingsSchemaOptionDescription
      type: string
    SettingsResult:
      title: SettingsResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/Settings'
    ShopShieldURI:
      title: ShopShieldURI
      type: object
      properties:
        id:
          $ref: '#/components/schemas/ShopShieldURIID'
        uri:
          type: string
          description: The URI that is protected by ShopShield
          example: /
        created_at:
          type: string
          description: The date and time the URI was protected by ShopShield
          example: '2021-01-01T00:00:00Z'
        updated_at:
          type: string
          description: The date and time the URI was last updated
          example: '2021-01-01T00:00:00Z'
    ShopShieldURIID:
      title: ShopShieldURIID
      type: string
      format: uuid
      description: The ID of the URI that is protected by ShopShield
      example: 123e4567-e89b-12d3-a456-426614174000
    Site:
      title: Site
      type: object
      allOf:
        - $ref: '#/components/schemas/SiteDetails'
        - $ref: '#/components/schemas/SiteDomains'
        - $ref: '#/components/schemas/SiteUsers'
    SiteID:
      title: SiteID
      type: integer
      description: ID of the Site you are interacting with
      example: 8880000888
    SiteAccessTokenRequest:
      title: SiteAccessTokenRequest
      type: object
      properties:
        ttl:
          type: integer
    SiteAccessTokenResponse:
      title: SiteAccessTokenResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SiteAccessTokenResult'
    SiteAccessTokenResult:
      title: SiteAccessTokenResult
      type: object
      properties:
        result:
          type: object
          properties:
            token:
              type: string
    SiteCredentialsResponse:
      title: SiteCredentialsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SiteCredentialsResult'
    SiteCredentialsResult:
      title: SiteCredentialsResult
      type: object
      properties:
        result:
          type: object
          properties:
            username:
              type: string
            password:
              type: string
    SiteDetails:
      title: SiteDetails
      type: object
      properties:
        id:
          $ref: '#/components/schemas/SiteID'
        domain:
          $ref: '#/components/schemas/SiteDomain'
        display_domain:
          $ref: '#/components/schemas/SiteDisplayDomain'
        rocket_url:
          $ref: '#/components/schemas/CDNURL'
        location:
          type: string
          description: Datacenter / Point of Presence (PoP) the site is located in
          example: US - Ashburn
        ftp_ip_address:
          $ref: '#/components/schemas/SFTPIPAddress'
        sftp_username:
          $ref: '#/components/schemas/SFTPUsername'
        disk_usage:
          $ref: '#/components/schemas/SiteDiskUsage'
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        production:
          type: integer
          description: If this is a staging site, the production site ID
          example: 1234567890
        staging:
          type: object
          properties:
            staging_id:
              description: ID of the staging site (if there is one and this is production)
              type: integer
              example: 1234567890
            staging_status:
              $ref: '#/components/schemas/SiteStatus'
        site_type:
          $ref: '#/components/schemas/PartnerSiteType'
        label:
          $ref: '#/components/schemas/SiteLabel'
        metadata:
          $ref: '#/components/schemas/SiteMetadata'
        status:
          $ref: '#/components/schemas/SiteStatus'
        status_reason:
          $ref: '#/components/schemas/SiteStatusReason'
    SiteDomain:
      title: SiteDomain
      type: string
      description: Main domain of the site
      example: xn--wgv71a119e.idn.icann.org
    SiteDisplayDomain:
      title: SiteDisplayDomain
      type: string
      description: Main domain of the site -- Including UTF-8 characters
      example: 日本語.idn.icann.org
    SiteDomains:
      title: SiteDomains
      type: object
      properties:
        domains:
          type: array
          description: Site's maindomain (WordPress domain), alternate_domain (www. if maindomain is apex, apex if maindomain is www.) and any additional domains which will respond with the same WordPress install (for multi-site)
          items:
            properties:
              maindomain:
                $ref: '#/components/schemas/MainDomain'
              alternate_domain:
                oneOf:
                  - $ref: '#/components/schemas/NullType'
                  - $ref: '#/components/schemas/MainDomain'
              additional_domains:
                type: array
                items:
                  $ref: '#/components/schemas/DomainAlias'
    SiteMetadata:
      title: SiteMetadata
      type: object
      additionalProperties: true
      example:
        key: value
    SiteResponse:
      title: GetSiteResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          $ref: '#/components/schemas/Site'
    SiteSettingsResponse:
      title: SiteSettingsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SettingsResult'
    SiteStatusReason:
      title: SiteStatusReason
      type: integer
      description: |
        Reasons why a site is in a specific status (for now, only related to pending).

        0 == No additional status information required,
        1 == Site is being transferred to a new server,
        2 == Site template is being created from this site,
        3 == Site template is being applied to this site,
        4 == This is a staging site that is currently in the process of being created,
        5 == Site was locked with "Lock My Site"
        6 == Main Domain is currently being changed
        7 == Main Domain validation change in progress
        8 == Site is being cloned
        9 == New Cloned Site, not ready yet
        10 == Site is being created from a template
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
    SiteTask:
      title: SiteTask
      type: object
      properties:
        id:
          $ref: '#/components/schemas/TaskID'
        task_status:
          $ref: '#/components/schemas/TaskStatus'
        site_id:
          type: integer
          description: ID of the Site the task is acting on
          example: 8880000888
        perc:
          $ref: '#/components/schemas/SiteTaskPercent'
        updated:
          $ref: '#/components/schemas/UpdatedAt'
        created:
          $ref: '#/components/schemas/CreatedAt'
        message:
          type: string
          description: Information about the task. Errors if it failed
          example: task execution timed out
        task_type:
          $ref: '#/components/schemas/SiteTaskType'
        task_level:
          type: string
          description: Level at which the task exists
          enum:
            - account
            - site
          example: site
    SiteTaskType:
      title: SiteTaskType
      type: string
      description: Type of task
      enum:
        - automated_restore
        - backup
        - clone_site
        - cloud_backup_create
        - cloud_backup_restore
        - publish
        - restore
        - staging
    SiteTaskWithSiteInfo:
      title: SiteTaskWithSiteInfo
      allOf:
        - $ref: '#/components/schemas/SiteTask'
        - $ref: '#/components/schemas/SiteTaskMetaDataString'
        - $ref: '#/components/schemas/SiteTaskSiteInfo'
    SiteTemplate:
      title: SiteTemplate
      type: object
      properties:
        name:
          type: string
          description: Name of the site template
          example: WooCommerce with SEO Plugins
          minLength: 1
          maxLength: 255
        template_id:
          $ref: '#/components/schemas/SiteTemplateID'
        created_from:
          type: object
          description: properties showing what site the template was created from
          properties:
            site_id:
              type: integer
              description: 'Site ID the template was created based on. NOTE: This site cannot be larger than 4Gb'
              example: 8675309
            domain:
              type: string
              description: Domain the template was created based on
              example: woocommerce-site-we-love.tld
        config:
          $ref: '#/components/schemas/WordPressMetadata'
        notes:
          type: string
          description: Notes about the site template
          example: Our traditional WooCommerce site with SEO including X and Y plugins on Z theme.
        tags:
          type: array
          items:
            type: string
          description: Tags which can be used to filter / search site templates
        created_at:
          type: string
          format: date-time
          description: When the site template was created
          example: '2018-03-20T09:12:28Z'
        updated_at:
          type: string
          format: date-time
          description: When the site template was last updated
          example: '2018-03-20T09:12:28Z'
    SiteUser:
      title: SiteUser
      type: object
      properties:
        user_id:
          type: integer
          description: ID of the site user
          example: 5
        name:
          type: string
          description: Name of the site user
          example: Ms. Site User
        email:
          type: string
          description: Site user's email address (username)
          example: siteuser@rocket.net
        status:
          type: string
          description: Status of the site user's access to this site
          enum:
            - Active
            - Declined
            - Invited
    SiteUserExtended:
      title: SiteUserExtended
      type: object
      properties:
        id:
          type: integer
          description: ID of the site user
          example: 5
        site_id:
          type: integer
          description: ID of the Site the Site User has access to
          example: 8880000888
        name:
          type: string
          description: Name of the site user
          example: Ms. Site User
        email:
          type: string
          description: Site user's email address (username)
          example: siteuser@rocket.net
        status:
          type: string
          description: Status of the site user's access to this site
          enum:
            - Active
            - Declined
            - Invited
        token:
          type: string
          description: Password Reset Token
        created_at:
          $ref: '#/components/schemas/CreatedAt'
    SiteUserResult:
      title: SiteUserResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/SiteUserExtended'
    SiteUsers:
      title: SiteUsers
      type: object
      properties:
        site_users:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/SiteUser'
    SiteUsersList:
      title: SiteUsersList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/SiteUserExtended'
    SiteTemplateResponse:
      title: SiteTemplateResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SiteTemplateResult'
    SiteTemplateResult:
      title: SiteTemplateResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/SiteTemplate'
    SortDirection:
      title: SortDirection
      type: string
      description: Direction to sort results in (asc = ascending, desc = descending)
      enum:
        - asc
        - desc
        - ASC
        - DESC
    SSHKey:
      title: SSHKey
      type: object
      properties:
        name:
          type: string
        key:
          type: string
        authstatus:
          type: string
        status:
          type: string
        haspub:
          type: integer
        file:
          type: string
        created:
          type: integer
        modified:
          type: integer
    SSHKeyList:
      title: SSHKeyList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/SSHKey'
    SSLStatus:
      title: SSLStatus
      type: string
      description: Status of the SSL Cert (pending_validation when DNS cannot be validated, active when live)
      enum:
        - active
        - backup_issued
        - deactivating
        - deleted
        - deletion_timed_out
        - deployment_timed_out
        - expired
        - holding_deployment
        - inactive
        - initializing
        - initializing_timed_out
        - issuance_timed_out
        - pending_cleanup
        - pending_deletion
        - pending_deployment
        - pending_expiration
        - pending_issuance
        - pending_validation
        - staging_active
        - staging_deployment
        - validation_timed_out
    StringResponse:
      title: StringResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/StringResult'
    StringResult:
      title: StringResult
      type: object
      properties:
        result:
          type: string
    StringSuccessResponse:
      title: StringSuccessResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/StringSuccessResult'
    StringSuccessResult:
      title: StringSuccessResult
      type: object
      properties:
        result:
          type: object
          properties:
            success:
              type: string
              example: ok
    SuccessBoolean:
      title: SuccessBoolean
      type: boolean
      description: whether the request succeeded
      example: true
      default: true
    SuccessResponse:
      title: SuccessResponse
      type: object
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/SuccessResult'
    SuccessResult:
      title: SuccessResult
      type: object
      properties:
        result:
          type: object
          properties:
            success:
              $ref: '#/components/schemas/SuccessBoolean'
    TaskID:
      title: TaskID
      type: string
      format: uuid
      description: ID of this task
      example: 01d680d5-de78-4e26-a380-5f7ad2c0877f
    TaskIDResponse:
      title: TaskIDResponse
      description: Information about the task that was created as a result of this API call
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/TaskIDResult'
    TaskIDResult:
      title: TaskIDResult
      type: object
      properties:
        result:
          type: object
          properties:
            task_id:
              type: string
              description: Task ID of the task that is now running
            task_level:
              type: string
              description: Level at which the task exists
              enum:
                - account
                - site
              example: account
    TaskStatus:
      title: TaskStatus
      type: string
      description: Current state/status of the task
      enum:
        - DONE
        - ERROR
        - NEW
        - PROGRESS
    TemplateReplacement:
      type: object
      description: key/value pair used for database replacement
      properties:
        key:
          description: Key which is already present in the database and should be replaced with value
          example: __contact_email__
          type: string
          pattern: ^__[a-zA-Z0-9_]+__$
        value:
          description: Value which the key will be set to
          type: string
          example: hello@rocket.net
    Theme:
      title: Theme
      type: object
      required:
        - name
        - status
        - update
        - update_version
        - version
        - title
        - description
      properties:
        name:
          $ref: '#/components/schemas/ThemeName'
        status:
          type: string
          description: Status of the theme
          enum:
            - active
            - inactive
        update:
          type: string
          description: If the theme has any updates available
          example: none
          enum:
            - available
            - none
        update_version:
          type: string
          description: Version of the theme that is available for update
          example: '1.3'
          nullable: true
        version:
          $ref: '#/components/schemas/ThemeVersion'
        title:
          type: string
          description: Title of the theme
          example: Twenty Twenty-One
        description:
          type: string
          description: Description of the theme from its author
          example: Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. With new block patterns, which allow you to create a beautiful layout in a matter of seconds, this theme’s soft colors and eye-catching — yet timeless — design will let your work shine. Take it for a spin! See how Twenty Twenty-One elevates your portfolio, business website, or personal blog.
    ThemeName:
      title: ThemeName
      type: string
      description: Name/Slug of the theme
      example: twentytwentyfour
    ThemeVersion:
      title: ThemeVersion
      type: string
      description: Version of the theme that is installed
      example: '1.2'
    TimeStamp:
      title: TimeStamp
      type: string
      description: Time stamp of the datapoint
      example: '2024-01-01T02:00:00Z'
    TotalRequestsResponse:
      title: TotalRequestsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - type: object
          properties:
            result:
              $ref: '#/components/schemas/TotalRequestsResponseResult'
    TotalRequestsResponseResult:
      title: TotalRequestsResponseResult
      type: object
      properties:
        totals:
          description: Totals for each type of request during the time period
          properties:
            totalRequests:
              allOf:
                - $ref: '#/components/schemas/CountIntegerMetric'
            edgeRequests:
              allOf:
                - $ref: '#/components/schemas/CountIntegerMetric'
            originRequests:
              allOf:
                - $ref: '#/components/schemas/CountIntegerMetric'
            wafEvents:
              allOf:
                - $ref: '#/components/schemas/CountIntegerMetric'
        graph:
          type: object
          description: Datapoints which can be used to draw a graph
          properties:
            totalRequests:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
            edgeRequests:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
            originRequests:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
            wafEvents:
              type: array
              items:
                $ref: '#/components/schemas/GraphDataPoint'
    TransferID:
      title: TransferID
      type: string
      format: uuid
      description: ID of the site transfer
      example: 123e4567-e89b-12d3-a456-426614174000
    UpdateAccountHostingPlanRequest:
      title: UpdateAccountHostingPlanRequest
      type: object
      required:
        - billing_product_id
      properties:
        billing_product_id:
          type: integer
          description: ID of the chosen product
        billing_cycle:
          type: string
          description: Billing cycle to change to (if not passed, the current billing cycle will be used)
          enum:
            - Monthly
            - Annual
          example: Monthly
    UpdateAccountHostingPlanResponse:
      title: UpdateAccountHostingPlanResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/UpdateAccountHostingPlanResult'
    UpdateAccountHostingPlanResult:
      title: UpdateAccountHostingPlanResult
      type: object
      required:
        - result
      properties:
        result:
          type: object
          required:
            - total
          properties:
            order_id:
              type: integer
              description: ID of the order that was created
            invoice_id:
              type: integer
              description: ID of the invoice that was created
            total:
              type: number
              description: Total amount of the invoice
    UpdateAccountMeRequest:
      title: UpdateAccountMeRequest
      type: object
      properties:
        firstname:
          type: string
          description: User's first name
          example: Rocket
        lastname:
          type: string
          description: User's last name
          example: Net
        email:
          type: string
          description: User's email address
          example: user@rocket.net
        twofactor_enabled:
          type: boolean
          description: Whether two factor authentication is enabled dor the user
        tax_id:
          $ref: '#/components/schemas/AccountTaxID'
    UpdatedAt:
      title: UpdatedAt
      type: string
      description: Time stamp of when the record was last updated
      example: '2024-01-01T02:00:00Z'
    UpdateBillingAddressRequest:
      title: UpdateBillingAddressRequest
      type: object
      required:
        - first_name
        - last_name
        - address_line_1
        - email
        - city
        - state
        - country
        - postal_code
        - telephone
      properties:
        first_name:
          type: string
          description: First name of the billing contact
          example: Rocket
        last_name:
          type: string
          description: Last name of the billing contact
          example: Billing-Contact
        address_line_1:
          type: string
          description: First Address line of the billing contact
          example: 17885 SE Federal Hwy
        address_line_2:
          type: string
          description: Second Address line of the billing contact
          example: Suite 100
        company_name:
          type: string
          description: Company name of the billing contact
          example: Rocket.net
        email:
          type: string
          description: Email address of the billing contact
          example: billing@rocket.net
        city:
          type: string
          description: City of the billing contact
          example: Jupiter
        state:
          type: string
          description: State / Province of the billing contact
          example: FL
        country:
          type: string
          description: Country Code of the billing contact
          example: US
        postal_code:
          type: string
          description: Postal code of the billing contact
          example: '33469'
        telephone:
          type: string
          description: Telephone number of the billing contact
          example: 877-374-0764
        receive_invoice_emails:
          type: boolean
          description: Setting to true will CC this email address on invoice emails
          default: false
          example: false
    UpdateBillingPayMethodRequest:
      title: CreateBillingPayMethodRequest
      type: object
      properties:
        active:
          type: boolean
          description: Use this payment method for all automated payments
          example: true
        address_id:
          type: integer
          description: ID of the billing address used for this payment method
          example: 888000888
        description:
          type: string
          description: Optional description of the card
          example: Citi Platinum Business
        expiry_date:
          type: string
          description: Expiration month and year of the payment method (if it is a credit card)
          example: 04/29
          minLength: 5
          maxLength: 5
    UpdateFtpAccountRequest:
      title: UpdateFtpAccountRequest
      type: object
      properties:
        new_password:
          $ref: '#/components/schemas/Password'
        quota:
          $ref: '#/components/schemas/QuotaSetter'
        homedir:
          $ref: '#/components/schemas/HomeDir'
    UpdateFtpAccountResponse:
      title: UpdateFtpAccountResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/UpdateFtpAccountResult'
    UpdateFtpAccountResult:
      title: UpdateFtpAccountResult
      type: object
      properties:
        result:
          type: object
          properties:
            quota:
              $ref: '#/components/schemas/Quota'
            homedir:
              $ref: '#/components/schemas/HomeDir'
    UpdatePasswordRequest:
      title: UpdatePasswordRequest
      type: object
      required:
        - current_password
        - new_password
        - new_password_confirm
      properties:
        current_password:
          type: string
          description: Current account password
        new_password:
          type: string
          description: New account password
        new_password_confirm:
          type: string
          description: Confirm new account password
    UpdatePluginRequest:
      title: UpdatePluginRequest
      type: object
      properties:
        plugin:
          $ref: '#/components/schemas/PluginName'
      required:
        - plugin
    UpdatePluginResponse:
      title: UpdatePluginResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/UpdatePluginResult'
    UpdatePluginResult:
      title: UpdatePluginResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                $ref: '#/components/schemas/PluginName'
              old_version:
                type: string
                description: Version of the plugin that was installed
                example: 5.3.2
              new_version:
                type: string
                description: Version of the plugin that is now installed
                example: 5.3.3
              note:
                type: string
                description: Status of the update
                enum:
                  - Plugin updated successfully
                  - Plugin already updated
    UpdateSettingsRequest:
      title: UpdateSettingsRequest
      type: object
      properties:
        new_php_version:
          type: string
          description: new php version for the site to use
          enum:
            - '5.6'
            - '7.0'
            - '7.2'
            - '7.3'
            - '7.4'
            - '8.0'
            - '8.1'
            - '8.2'
            - '8.3'
            - '8.4'
        wp_admin_sso_default_user_id:
          type: integer
          description: The ID of the default wp-admin SSO user
          minimum: 1
          example: 3
        wp_core_auto_updates:
          type: integer
          description: 'Control WordPress Core Auto-Updates: 0 - No auto-updates, 1 - Update all versions, 2 - Update minor/patch versions only'
          enum:
            - 0
            - 1
            - 2
        wp_theme_auto_updates:
          type: integer
          enum:
            - 0
            - 1
        wp_plugin_auto_updates:
          type: integer
          enum:
            - 0
            - 1
        ssh_access:
          type: integer
          enum:
            - 0
            - 1
    UpdateSiteRequest:
      title: UpdateSiteRequest
      type: object
      properties:
        label:
          $ref: '#/components/schemas/SiteLabel'
        metadata:
          $ref: '#/components/schemas/SiteMetadata'
        site_type:
          $ref: '#/components/schemas/SiteType'
    UpdateSiteUserRequest:
      title: UpdateSiteUserRequest
      type: object
      properties:
        name:
          type: string
          description: New name of the site user
          example: Ms. Site User
        email:
          type: string
          description: New email address of the site user
          example: siteuser@rocket.net
        password:
          type: string
          description: New password of the site user
          example: password123jh378rg39ho3jpr@#U)@#@UI
    UpdateThemeRequest:
      title: UpdateThemeRequest
      type: object
      properties:
        theme:
          type: string
        update:
          type: boolean
          description: Whether to update the theme to the latest version
          example: true
          default: true
      required:
        - theme
    UpdateThemeResponse:
      title: UpdateThemeResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/UpdateThemeResult'
    UpdateThemeResult:
      title: UpdateThemeResult
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              old_version:
                type: string
              new_version:
                type: string
              note:
                type: string
    UpdateUserRequest:
      title: UpdateUserRequest
      type: object
      properties:
        twofactor_required:
          type: boolean
          description: Require the user to use two-factor to log into Rocket.net
          example: true
        roles:
          type: array
          description: Update user's roles
          example:
            - billing_admin
            - account_user
          items:
            type: string
            enum:
              - account_user
              - billing_admin
              - user_admin
    UpdateVersion:
      title: UpdateVersion
      type: string
      description: Version of the plugin that can be updated to
      example: 5.3.4
      nullable: true
    UploadFileRequest:
      title: UploadFileRequest
      type: object
      required:
        - content
        - path
        - filename
      properties:
        content:
          type: string
          description: Content of the file
          example: <?php echo 'Hello, world!'; ?>
        path:
          type: string
          description: Path to the file
          example: wp-content/plugins
        filename:
          type: string
          description: Name of the file
          example: plugin.php
        binary:
          type: boolean
          description: Whether `content` is base64-encoded binary. When omitted, inferred from the filename.
          example: false
    URI:
      title: URI
      type: string
      description: URI being requested
      example: /blog/the-rocket-difference-how-we-created-the-fastest-wordpress-hosting-in-the-world/
    User:
      title: User
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID of the user
          example: 8001dbd5-e28f-41df-aa67-107fc6dc83fc
        firstname:
          type: string
          description: User's first name / given name
          example: Rocket
        lastname:
          type: string
          description: User's last name / family name / surname
          example: User
        email:
          type: string
          description: User's email address
          example: email@domain.tld
        roles:
          $ref: '#/components/schemas/UserRoles'
        twofactor_enabled:
          type: boolean
          description: If 2-factor authentication is enabled on this account
          example: true
        twofactor_required:
          type: boolean
          description: If 2-factor authentication is required to use this account
          example: true
        status:
          type: string
          description: Status of the user
          enum:
            - active
            - invited
    UserAgent:
      title: UserAgent
      type: string
      description: User-Agent of the device making the request
      example: Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBAV/471.0.0.27.107;FBBV/632147304;FBDV/iPhone15,3;FBMD/iPhone;FBSN/iOS;FBSV/17.6.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/80]
    UserList:
      title: UserList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/User'
    UserPasswordStrengthRequirements:
      title: UserPasswordStrengthRequirements
      type: object
      properties:
        minimum_length:
          type: string
          description: Password must be at least 8 characters long
          example: Password must be at least 8 characters long
        length:
          type: string
          description: Increase password length
          example: Increase password length
        mix_of_characters:
          type: string
          description: Use at least 1 number and 1 symbol
          example: Use at least 1 number and 1 symbol
        mixed_case:
          type: string
          description: Use at least one UPPER case letter and at least one LOWER case letter
          example: Use at least one UPPER case letter and at least one LOWER case letter
        avoid_common_passwords:
          type: string
          description: Avoid using one of the most common passwords
          example: Avoid using one of the most common passwords
        use_passphrases:
          type: string
          description: 'NOTE: Passphrases (multiple words with spaces or dashes in between them) are better than passwords'
          example: 'NOTE: Passphrases (multiple words with spaces or dashes in between them) are better than passwords'
        variety:
          type: string
          description: Repeat less characters
          example: Repeat less characters
    UserPasswordStrengthResponse:
      title: UserPasswordStrengthResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/UserPasswordStrengthResult'
    UserPasswordStrengthResult:
      title: UserPasswordStrengthResult
      type: object
      properties:
        result:
          type: object
          properties:
            strong:
              type: boolean
              description: Whether the given password is strong enough
              example: false
            missed_requirements:
              type: array
              description: Requirements which were not satisfied
              example:
                - length
                - variety
              items:
                type: string
            requirements:
              oneOf:
                - $ref: '#/components/schemas/EmptyObject'
                - $ref: '#/components/schemas/UserPasswordStrengthRequirements'
    GeneratePasswordRequest:
      title: GeneratePasswordRequest
      type: object
      properties:
        length:
          type: integer
          default: 16
          minimum: 16
          maximum: 72
          description: Desired password length (optional; min 16, max 72).
          example: 16
    GeneratePasswordResponse:
      title: GeneratePasswordResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          $ref: '#/components/schemas/GeneratePasswordResultResult'
    GeneratePasswordResultResult:
      title: GeneratePasswordResultResult
      type: object
      properties:
        password:
          type: string
          description: Generated password meeting strength requirements.
    UserResponse:
      title: UserResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
      properties:
        result:
          $ref: '#/components/schemas/User'
    UserRole:
      type: string
      description: Role that the user has (account_user has access to everything except user management. billing_admin can interact with billing and view info about sites but not change anything other than billing, user_admin is account_user who can also manage users)
      enum:
        - account_owner
        - account_user
        - billing_admin
        - user_admin
    UserRoles:
      type: array
      description: User's roles
      example:
        - account_user
        - user_admin
      items:
        $ref: '#/components/schemas/UserRole'
    ValidationRecord:
      title: ValidationRecord
      type: object
      description: DNS records that need to be added for a site to be validated and SSL to be issued
      properties:
        type:
          type: string
          description: Type of DNS record
          enum:
            - a
            - cname
            - txt
        name:
          description: Name of the DNS record
          type: string
          example: _acme-challenge.thebestreallylongdomainname.com
        value:
          type: string
          description: Value of the DNS record
          example: m_K7UGMVceMWPcgPn3zpqEtUV7RpFDBUqvl-yZyAUNU
        status:
          type: string
          description: Status of the domain (pending_validation when DNS cannot be validated, active when live)
          enum:
            - active
            - active_redeploying
            - backup_issued
            - blocked
            - deactivating
            - deleted
            - deletion_timed_out
            - deployment_timed_out
            - expired
            - holding_deployment
            - inactive
            - initializing
            - initializing_timed_out
            - issuance_timed_out
            - moved
            - pending
            - pending_blocked
            - pending_cleanup
            - pending_deletion
            - pending_deployment
            - pending_expiration
            - pending_issuance
            - pending_migration
            - pending_provisioned
            - pending_validation
            - provisioned
            - staging_active
            - staging_deployment
            - test_active
            - test_active_apex
            - test_blocked
            - test_failed
            - test_pending
            - validation_timed_out
    ViewFileResponse:
      title: ViewFileResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/ViewFileResult'
    ViewFileResult:
      title: ViewFileResult
      type: object
      properties:
        result:
          type: object
          properties:
            content:
              type: string
              description: Content of the file. When binary is true, this field is base64-encoded.
              example: <?php echo 'Hello, world!'; ?>
            content_type:
              type: string
              description: MIME type of the file (e.g. image/jpeg, text/plain) for correct display in viewers.
              example: image/jpeg
            binary:
              type: boolean
              description: True when content is base64-encoded binary; false when content is plain text.
              example: false
    VisitorsResponse:
      title: VisitorsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/VisitorsResult'
    VisitorsResult:
      title: VisitorsResult
      type: object
      properties:
        result:
          type: object
          properties:
            visitors:
              type: array
              items:
                type: object
                properties:
                  visitors:
                    type: integer
                  date:
                    type: string
            total:
              type: integer
    WAFEvent:
      title: WAFEvent
      type: object
      properties:
        action:
          type: string
          description: Action taken by the Firewall
          example: block
          enum:
            - allow
            - block
            - bypass
            - challenge
            - force_connection_close
            - jschallenge
            - log
            - managed_challenge
            - rewrite
            - skip
        clientASNDescription:
          $ref: '#/components/schemas/ASNDescription'
        clientAsn:
          type: string
          description: Autonomous System Number (ASN)
          example: '701'
        clientCountryName:
          type: string
          description: 2 letter country code of the IP's location
          example: US
        clientIP:
          $ref: '#/components/schemas/IP'
        clientRequestHTTPHost:
          $ref: '#/components/schemas/HTTPHost'
        clientRequestHTTPMethodName:
          $ref: '#/components/schemas/HTTPMethod'
        clientRequestHTTPProtocol:
          type: string
          description: HTTP Protocol version the client requested
          example: HTTP/2
        clientRequestPath:
          $ref: '#/components/schemas/URI'
        clientRequestQuery:
          type: string
          description: Query parameters from the request
          example: '?rocket=fast'
        datetime:
          $ref: '#/components/schemas/DateTime'
        matchIndex:
          type: integer
          example: 0
        metadata:
          type: array
          description: Metadata about the rules that triggered the event action
          items:
            $ref: '#/components/schemas/WAFEventMetadata'
        rayName:
          $ref: '#/components/schemas/RayID'
        ruleId:
          type: string
          description: ID of the rule that caused this action
          example: bfd30cf7be1e4f0b871c7d10dda5fc66
        sampleInterval:
          $ref: '#/components/schemas/SampleInterval'
        source:
          $ref: '#/components/schemas/EventSource'
        userAgent:
          $ref: '#/components/schemas/UserAgent'
    WAFEventMetadata:
      type: object
      title: WAFEventMetadata
      properties:
        key:
          type: string
          description: Name of the metadata key
          example: ruleset_version
          enum:
            - ruleset_version
            - type
            - version
        value:
          type: string
          description: Value of the metadata variable
          example: '10'
    WAFEventsResponse:
      title: WAFEventsResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/WAFEventsResponseData'
    WAFEventsResponseActivity:
      title: WAFEventsResponseActivity
      type: object
      properties:
        __typename:
          type: string
          description: name of the property
          example: ZoneFirewallEventsAdaptive
          enum:
            - ZoneFirewallEventsAdaptive
        action:
          type: string
          description: Action taken by the Firewall
          example: block
          enum:
            - allow
            - block
            - bypass
            - challenge
            - force_connection_close
            - jschallenge
            - log
            - managed_challenge
            - rewrite
            - skip
        clientASNDescription:
          $ref: '#/components/schemas/ASNDescription'
        clientAsn:
          type: string
          description: Autonomous System Number (ASN)
          example: '701'
        clientCountryName:
          type: string
          description: 2 letter country code of the IP's location
          example: US
        clientIP:
          $ref: '#/components/schemas/IP'
        clientRequestHTTPHost:
          $ref: '#/components/schemas/HTTPHost'
        clientRequestHTTPMethodName:
          $ref: '#/components/schemas/HTTPMethod'
        clientRequestHTTPProtocol:
          type: string
          description: HTTP Protocol version the client requested
          example: HTTP/2
        clientRequestPath:
          $ref: '#/components/schemas/URI'
        clientRequestQuery:
          type: string
          description: Query parameters from the request
          example: '?rocket=fast'
        datetime:
          $ref: '#/components/schemas/DateTime'
        matchIndex:
          type: integer
          example: 0
        metadata:
          type: array
          description: Metadata about the rules that triggered the event action
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveMetadataElem'
        rayName:
          $ref: '#/components/schemas/RayID'
        ruleId:
          type: string
          description: ID of the rule that caused this action
          example: bfd30cf7be1e4f0b871c7d10dda5fc66
        sampleInterval:
          $ref: '#/components/schemas/SampleInterval'
        source:
          $ref: '#/components/schemas/EventSource'
        userAgent:
          $ref: '#/components/schemas/UserAgent'
    WAFEventsResponseData:
      title: WAFEventsResponseData
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WAFEventsResponseViewer'
    WAFEventsResponseTotal:
      title: WAFEventsResponseTotal
      type: object
      properties:
        __typeName:
          type: string
          description: name of the property
          example: ZoneFirewallEventsAdaptiveByTimeGroups
          enum:
            - ZoneFirewallEventsAdaptiveByTimeGroups
        avg:
          type: object
          properties:
            __typename:
              type: string
              description: name of the property
              example: ZoneFirewallEventsAdaptiveByTimeGroupsAvg
              enum:
                - ZoneFirewallEventsAdaptiveByTimeGroupsAvg
            sampleInterval:
              $ref: '#/components/schemas/SampleInterval'
        count:
          type: integer
          description: Overall number of WAF Events in this timedframe
          example: 456888
    WAFEventsResponseViewer:
      title: WAFEventsResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/WAFEventsResponseZone'
    WAFEventsResponseZone:
      title: WAFEventsResponseZone
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        activity:
          type: array
          items:
            $ref: '#/components/schemas/WAFEventsResponseActivity'
        total:
          type: array
          items:
            $ref: '#/components/schemas/WAFEventsResponseTotal'
    WAFEventsServicesResponse:
      title: WAFEventsServicesResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/WAFEventsServicesResponseData'
    WAFEventsServicesResponseData:
      title: WAFEventsServicesResponseData
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WAFEventsServicesResponseViewer'
    WAFEventsServicesResponseViewer:
      title: WAFEventsServicesResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/WAFEventsServicesResponseZone'
    WAFEventsServicesResponseZone:
      title: WAFEventsServicesResponseZone
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        firewallEventsAdaptiveGroups:
          type: array
          items:
            $ref: '#/components/schemas/FirewallEventsAdaptiveGroup'
    WAFFirewallEventsResponse:
      title: WAFFirewallEventsResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/WAFFirewallEventsResult'
    WAFFirewallEventsSourceResponseViewer:
      title: WAFFirewallEventsSourceResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/WAFFirewallEventsSourceResponseZone'
    WAFFirewallEventsSourceResponseZone:
      title: WAFFirewallEventsSourceResponseZone
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        topASNs:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopASNs'
        topCountries:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topFirewallRules:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topHosts:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topHTTPMethods:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topIPs:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topRatelimitRules:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topUriPaths:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topUserAgents:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        topWAFRules:
          type: array
          items:
            $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsTopDimensions'
        total:
          type: array
          items:
            type: object
            properties:
              __typename:
                $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsType'
              avg:
                $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsAvg'
              count:
                $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsCount'
    WAFFirewallEventsResult:
      title: WAFFirewallEventsResult
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WAFFirewallEventsResponseViewer'
        allowTotal:
          type: integer
          description: Events where the rule allowed the visit
          example: 10
        blockTotal:
          type: integer
          description: Events where the rule blocked the visit
          example: 6130
        challengeTotal:
          type: integer
          description: Events where the rule caused a challenge to be solved before the visit
          example: 100
        skipTotal:
          type: integer
          description: Events where the rule skipped the Web Application Firewall (WAF)
          example: 10
    WAFFirewallEventsResponseZoneSeries:
      title: WAFFirewallEventsResponseZoneSeries
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsCount'
        dimensions:
          type: object
          properties:
            typename:
              $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsType'
            metric:
              $ref: '#/components/schemas/WAFMetric'
            ts:
              $ref: '#/components/schemas/DateTime'
    WAFMetric:
      title: WAFMetric
      type: string
      example: '100016'
    WordpressLoginResponse:
      title: WordpressLoginResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/WordpressLoginResult'
    WordpressLoginResult:
      title: WordpressLoginResult
      type: object
      properties:
        result:
          type: object
          properties:
            sign_on_url:
              type: string
    WordPressMetadata:
      title: WordPressMetadata
      type: object
      description: properties about the WordPress site
      properties:
        wordpress:
          description: WordPress properties
          type: object
          properties:
            version:
              type: string
              description: version of WordPress that the site was running
              example: 6.4.1
            php_version:
              type: string
              description: version of PHP that the site was running
              example: '8.2'
              nullable: true
            plugins:
              type: array
              items:
                $ref: '#/components/schemas/WordPressPluginOrTheme'
            themes:
              type: array
              items:
                $ref: '#/components/schemas/WordPressPluginOrTheme'
    WordPressPluginInstall:
      title: WordPressPluginInstall
      type: object
      properties:
        name:
          $ref: '#/components/schemas/PluginName'
        version:
          $ref: '#/components/schemas/PluginVersion'
        activated:
          type: boolean
          description: If the plugin is actived
          example: false
    WordPressPluginInstallNote:
      title: WordPressPluginInstallNote
      type: object
      properties:
        note:
          type: string
          description: Note about whether or not the plugin was installed and activated ($ indicates a placeholder variable)
          enum:
            - '404: Plugin not found'
            - 'PHP Error prevented activation: <error>'
            - 'PHP Error prevented installation: <error>'
            - PHP version mismatch prevented activation.
            - PHP version mismatch prevented installation.
            - Plugin already installed
            - Plugin installed from custom url
            - Plugin '<plugin_name>' activated.
            - Unable to install plugin. PHP Fatal error. Try installing just <plugin_name>
            - ''
    WordPressPluginOrTheme:
      title: WordPressPluginOrTheme
      type: object
      properties:
        name:
          type: string
        title:
          type: string
        version:
          type: string
        activated:
          type: boolean
    WordpressStatusResponse:
      title: WordpressStatusResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/WordpressStatusResult'
    WordpressStatusResult:
      title: WordpressStatusResult
      type: object
      properties:
        result:
          type: object
          properties:
            wordpress_status:
              type: object
              properties:
                operational_status:
                  type: string
                  description: If your site has critical errors and is not operational this will be 'critical_error'. 'not_applicable' will be shown for non-WordPress sites. 'unknown' should there be an issue gathering status
                  example: operational
                  enum:
                    - operational
                    - critical_error
                    - not_applicable
                    - unknown
                error:
                  type: string
                  description: If your site has any critical errors, they will be displayed here
                  example: |-
                    Uncaught Error: Call to undefined function add_filter() in phar:///usr/local/bin/wp/vendor/wp-cli/config-command/src/Config_Command.php(444) : eval()'d code:113
                    Stack trace:
                    #0 phar:///usr/local/bin/wp/vendor/wp-cli/config-command/src/Config_Command.php(444): eval()
                    #1 phar:///usr/local/bin/wp/vendor/wp-cli/config-command/src/Config_Command.php(427): Config_Command::get_wp_config_vars('/home/lahkfcj/p...')
                    #2 [internal function]: Config_Command->get(Array, Array)
                    #3 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php(100): call_user_func(Array, Array, Array)
                    #4 [internal function]: WP_CLI\Dispatcher\CommandFactory::WP_CLI\Dispatcher\{closure}(Array, Array)
                    #5 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php(491): call_user_func(Object(Closure), Array, Array)
                    #6 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(431): WP_CLI\Dispatcher\Subcommand->invoke(Array, Array, Array)
                    #7 phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/ph in phar:///usr/local/bin/wp/vendor/wp-cli/config-command/src/Config_Command.php(444) : eval()'d code on line 113
    WordPressThemeInstall:
      title: WordPressThemeInstall
      type: object
      properties:
        name:
          type: string
          description: Name of the Theme
        version:
          type: string
          description: Version of the Theme to install
        activated:
          type: boolean
          description: Whether the theme is activated as the current theme
    WordPressThemeInstallNote:
      title: WordPressThemeInstallNote
      type: object
      properties:
        note:
          type: string
          description: Note about the object
          example: Errors installing plugin
    WAFEventsTimeResponse:
      title: WAFEventsTimeResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/WAFEventsTimeResponseData'
    WAFEventsTimeResponseData:
      title: WAFEventsTimeResponseData
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WAFEventsTimeResponseViewer'
    WAFEventsTimeResponseZoneDistribution:
      title: WAFEventsTimeResponseZoneDistribution
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveByTimeGroupsType'
            avg:
              $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveByTimeGroupsAvg'
            c:
              type: integer
              example: 1
            d:
              type: object
              properties:
                __typename:
                  description: name of the property
                  example: ZoneFirewallEventsAdaptiveByTimeGroupsDimensions
                  enum:
                    - ZoneFirewallEventsAdaptiveByTimeGroupsDimensions
                t:
                  description: Time the event occurred
                  example: '2024-08-23T20:15:00Z'
                  type: string
    ZoneFirewallEventsAdaptiveGroupsAvg:
      title: ZoneFirewallEventsAdaptiveGroupsAvg
      type: object
      properties:
        __typename:
          type: string
          example: ZoneFirewallEventsAdaptiveGroupsAvg
          description: name of the property
          enum:
            - ZoneFirewallEventsAdaptiveGroupsAvg
        sampleInterval:
          $ref: '#/components/schemas/SampleInterval'
    ZoneFirewallEventsAdaptiveGroupsCount:
      title: ZoneFirewallEventsAdaptiveGroupsCount
      type: integer
      description: Overall number of firewall events
      example: 25661
    ZoneFirewallEventsAdaptiveGroupsDimensionsStringMetric:
      title: ZoneFirewallEventsAdaptiveGroupsDimensionsStringMetric
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsType'
        metric:
          type: string
          example: '100016'
        ts:
          $ref: '#/components/schemas/DateTime'
    ZoneFirewallEventsAdaptiveGroupsDimensionsStringMetricDescription:
      title: ZoneFirewallEventsAdaptiveGroupsDimensionsStringMetricDescription
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsType'
        description:
          type: string
          example: AMAZON-AES
        metric:
          type: string
          example: '100016'
        ts:
          $ref: '#/components/schemas/DateTime'
    ZoneFirewallEventsAdaptiveGroupsDimensionsSource:
      title: ZoneFirewallEventsAdaptiveGroupsDimensionsSource
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsType'
        source:
          $ref: '#/components/schemas/EventSource'
    ZoneFirewallEventsAdaptiveGroupsDimensionsType:
      title: ZoneFirewallEventsAdaptiveGroupsDimensionsType
      type: string
      example: ZoneFirewallEventsAdaptiveGroupsDimensions
      description: name of the property
      enum:
        - ZoneFirewallEventsAdaptiveGroupsDimensions
    ZoneFirewallEventsAdaptiveGroupsTopASNs:
      title: ZoneFirewallEventsAdaptiveGroupsTopWAFRules
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsStringMetricDescription'
    ZoneFirewallEventsAdaptiveGroupsTopDimensions:
      title: ZoneFirewallEventsAdaptiveGroupsTopDimensions
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/ZoneFirewallEventsAdaptiveGroupsDimensionsStringMetric'
    ZoneFirewallEventsAdaptiveGroupsType:
      title: ZoneFirewallEventsAdaptiveGroupsType
      type: string
      example: ZoneFirewallEventsAdaptiveGroups
      description: name of the property
      enum:
        - ZoneFirewallEventsAdaptiveGroups
    ZoneFirewallEventsAdaptiveMetadataElem:
      type: object
      title: ZoneFirewallEventsAdaptiveMetadataElem
      properties:
        __typename:
          type: string
          example: ZoneFirewallEventsAdaptiveMetadataElem
          description: name of the property
          enum:
            - ZoneFirewallEventsAdaptiveMetadataElem
        key:
          type: string
          description: Name of the metadata key
          example: ruleset_version
          enum:
            - ruleset_version
            - type
            - version
        value:
          type: string
          description: Value of the metadata variable
          example: '10'
    ZoneHttpRequestsAdaptiveGroupsBase:
      title: ZoneHttpRequestsAdaptiveGroupsBase
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
    ZoneHttpRequestsAdaptiveGroupsAvg:
      type: object
      title: ZoneHttpRequestsAdaptiveGroupsAvg
      properties:
        __typename:
          type: string
          example: ZoneHttpRequestsAdaptiveGroupsAvg
          description: name of the property
          enum:
            - ZoneHttpRequestsAdaptiveGroupsAvg
        sampleInterval:
          $ref: '#/components/schemas/SampleInterval'
    ZoneHttpRequestsAdaptiveGroupsCount:
      title: ZoneHttpRequestsAdaptiveGroupsCount
      type: integer
      description: Overall number of requests with this cache status
      example: 456888
    ZoneHttpRequestsAdaptiveGroupsDimensionsType:
      title: ZoneHttpRequestsAdaptiveGroupsDimensionsType
      type: string
      example: ZoneHttpRequestsAdaptiveGroupsDimensions
      description: name of the property
      enum:
        - ZoneHttpRequestsAdaptiveGroupsDimensions
    ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes:
      title: ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes
      type: object
      properties:
        __typename:
          type: string
          example: ZoneHttpRequestsAdaptiveGroupsSum
          description: name of the property
          enum:
            - ZoneHttpRequestsAdaptiveGroupsSum
        edgeResponseBytes:
          description: number of bytes transferred for this type of request
          type: integer
          example: 3378484777
    ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytesAndVisits:
      title: ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytesAndVisits
      type: object
      properties:
        __typename:
          type: string
          example: ZoneHttpRequestsAdaptiveGroupsSum
          description: name of the property
          enum:
            - ZoneHttpRequestsAdaptiveGroupsSum
        edgeResponseBytes:
          description: number of bytes transferred for this type of request
          type: integer
          example: 3378484777
        visits:
          description: number of visit in this timeframe
          type: integer
          example: 15
    ZoneHttpRequestsAdaptiveGroupsSumVisits:
      title: ZoneHttpRequestsAdaptiveGroupsSumVisits
      type: object
      properties:
        __typename:
          type: string
          example: ZoneHttpRequestsAdaptiveGroupsSum
          description: name of the property
          enum:
            - ZoneHttpRequestsAdaptiveGroupsSum
        visits:
          description: number of visit in this timeframe
          type: integer
          example: 15
    ZoneHttpRequestsAdaptiveGroupsType:
      title: ZoneHttpRequestsAdaptiveGroupsType
      type: string
      example: ZoneHttpRequestsAdaptiveGroups
      description: name of the property
      enum:
        - ZoneHttpRequestsAdaptiveGroups
    ZoneHttpRequestsAdaptiveGroupsWithDimensionsIntMetric:
      title: ZoneHttpRequestsAdaptiveGroupsWithDimensionsIntMetric
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsIntMetric'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
    ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric:
      title: ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetric
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsStringMetric'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
    ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetricDescription:
      title: ZoneHttpRequestsAdaptiveGroupsWithDimensionsStringMetricDescription
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsType'
        avg:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsAvg'
        count:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsCount'
        dimensions:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsStringMetricDescription'
        sum:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsSumEdgeResponseBytes'
    GetAccountHostingPlanResponse:
      title: GetAccountHostingPlanResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/HostingPlanResult'
    AccountTaxID:
      type: string
      description: Tax ID of the user (only available for account_owner and billing_admin roles)
      example: '1234567890'
    SiteTaskPercent:
      title: SiteTaskPercent
      type: integer
      description: Percentage of completion
      example: 90
      minimum: 0
      maximum: 100
    SiteTaskMetaDataString:
      title: SiteTaskMetaDataString
      type: object
      properties:
        meta_data:
          type: string
          description: dictionary of data with more information about the task such as cloned_site_id or template_replacements
          example: '{"cloned_site_id": 1234567890, "template_replacements": [{"key": "__CONTACT_EMAIL__", "value": "hello@rocket.net"}]}'
    SiteTaskSiteInfo:
      title: SiteTaskSiteInfo
      type: object
      required:
        - site_info
      properties:
        site_info:
          type: object
          required:
            - id
            - domain
            - display_domain
          properties:
            id:
              $ref: '#/components/schemas/SiteID'
            domain:
              $ref: '#/components/schemas/SiteDomain'
            display_domain:
              $ref: '#/components/schemas/SiteDisplayDomain'
    AccountTaskType:
      type: string
      description: Type of task. create_site_from_template = create a new site from a site template
      enum:
        - create_site_from_template
        - create_site_template
      example: create_site_from_template
    AccountTaskMeCall:
      title: AccountTaskMeCall
      type: object
      properties:
        id:
          $ref: '#/components/schemas/TaskID'
        task_status:
          $ref: '#/components/schemas/TaskStatus'
        account_user_id:
          type: integer
          description: ID of the account the task belongs to
          example: 90099099
        user_id:
          type: string
          description: ID of the user who created the task
          example: 298348a3-c006-46a3-86c2-bb6922b6e452
        perc:
          type: integer
          description: Percentage of completion
          example: 90
        updated:
          $ref: '#/components/schemas/UpdatedAt'
        created:
          $ref: '#/components/schemas/CreatedAt'
        message:
          type: string
          description: Information about the task. Errors if it failed
          example: task execution timed out
        task_type:
          $ref: '#/components/schemas/AccountTaskType'
        meta_data:
          type: string
          description: dictionary of data with more information about the task such as site_id or template_id
          example: '{"site_id": 1234567890}'
        task_level:
          type: string
          description: Level at which the task exists
          enum:
            - account
            - site
          example: account
    AccountInfoResult:
      title: AccountInfoResult
      type: object
      properties:
        result:
          type: object
          properties:
            client:
              type: object
              properties:
                firstname:
                  type: string
                  description: User's first name
                  example: Rocket
                lastname:
                  type: string
                  description: User's last name
                  example: Net
                email:
                  type: string
                  description: User's email address
                  example: user@rocket.net
                id:
                  type: string
                  description: User's ID
                  format: uuid
                  example: 123e4567-e89b-12d3-a456-426614174000
                password_set:
                  type: boolean
                  description: If a password has not been set, POST /users/{user_id}/password will need to be used to set one
                  example: false
                twofactor_enabled:
                  type: boolean
                  description: Whether two factor authentication is enabled for the user
                  example: false
                twofactor_required:
                  type: boolean
                  description: This user is required to use Two factor authentication by the account owner
                  example: false
                roles:
                  type: array
                  items:
                    $ref: '#/components/schemas/UserRole'
                  description: Roles the user has
                  example:
                    - account_user
                    - user_admin
                access_level:
                  type: string
                  description: Access level of the user
                  enum:
                    - user
                    - site
                    - site_user
                tax_id:
                  $ref: '#/components/schemas/AccountTaxID'
            package:
              type: object
              properties:
                package_id:
                  type: integer
                  description: ID of the hosting plan
                  example: 1
                account_balance:
                  type: number
                  description: Balance of the account (negative is credit, positive is a balance due)
                  example: 100
                account_type:
                  type: string
                  description: Managed Hosting or Reseller Hosting
                  example: managed
                  enum:
                    - managed
                    - reseller
                plan:
                  type: string
                  description: Name of the hosting plan
                  example: Agency Tier 6
                start_date:
                  type: string
                  description: Date the account was created
                  example: '2024-01-01'
                next_due_date:
                  type: string
                  description: Date the next billing cycle is due
                  example: '2024-02-01'
                over_due_invoices:
                  type: array
                  description: If the account has any overdue invoices, their ids and due dates will be shown here
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: ID of the invoice
                        example: 880088
                      due_date:
                        type: string
                        description: Date the invoice was due
                        example: '2024-02-03'
                      total:
                        type: number
                        description: Total amount of the invoice
                        example: 100
            usage:
              type: object
              properties:
                visitors:
                  type: number
                  description: Number of visitors for all sites
                  example: 43540
                disk:
                  description: Disk Usage for all sites in kb
                  type: number
                  example: 2696499
                bandwidth:
                  description: Bandwidth Usage for all sites in kb
                  example: 31558472
                  type: number
                sites:
                  type: integer
                  description: Number of sites in the account
                  example: 10
            limits:
              type: object
              properties:
                visitors:
                  type: integer
                  description: Maximum number of visitors allowed in the account - 0 == unlimited
                  example: 0
                disk:
                  description: Disk Usage Limit for all sites in kb
                  type: integer
                  example: 230400
                bandwidth:
                  description: Bandwidth Usage Limit for all sites in kb
                  type: integer
                  example: 1536000
                sites:
                  type: integer
                  description: Maximum number of sites allowed in the account
                  example: 100
            tasks:
              type: array
              items:
                anyOf:
                  - $ref: '#/components/schemas/SiteTaskWithSiteInfo'
                  - $ref: '#/components/schemas/AccountTaskMeCall'
            pending_site_transfers:
              type: array
              items:
                $ref: '#/components/schemas/CustomerSiteTransfer'
    BillingSSORequest:
      title: BillingSSORequest
      type: object
      required:
        - destination
      properties:
        destination:
          type: string
          description: Page to SSO into
          enum:
            - clientarea.php
            - index.php
            - feature-requests.php
            - registration.php
            - upgrade.php
            - zendesk.php
          example: index.php
        params:
          type: string
          description: URL params to pass to the destination
          example: action=productdetails&id=12345
    SSOLink:
      title: SSOLink
      type: object
      properties:
        result:
          type: object
          properties:
            link:
              type: string
              description: Link to use to SSO into the Billing section of the Portal
    BillingPaymentMethodID:
      title: BillingPaymentMethodID
      type: integer
      description: ID of the payment method
      example: 880088
    BillingPaymentMethodType:
      title: BillingPaymentMethodType
      type: string
      enum:
        - Credit Card
        - PayPal
      example: Credit Card
    BillingPaymentMethodActive:
      title: BillingPaymentMethodActive
      type: boolean
      description: The active payment method is the one that will be used to pay any automated payments
      example: true
    BillingPaymentMethodDescription:
      title: BillingPaymentMethodDescription
      type: string
      description: Optional description of the card
      example: Citi Platinum Business
    BillingPaymentMethodCardLastFour:
      title: BillingPaymentMethodCardLastFour
      type: string
      description: Last 4 digits of the payment method (if it is a credit card)
      example: '1234'
    BillingPaymentMethodCardType:
      title: BillingPaymentMethodCardType
      type: string
      description: Used payment card network
      example: Visa
    BillingPaymentMethodExpiryDate:
      title: BillingPaymentMethodExpiryDate
      type: string
      description: Expiration month and year of the payment method (if it is a credit card)
      example: 04/29
    BillingPaymentMethodLastUpdated:
      title: BillingPaymentMethodLastUpdated
      type: string
      description: Date the payment method was last updated
      example: '2024-01-01T02:00:00Z'
    BillingPaymentMethodForAddress:
      title: BillingPaymentMethodForAddress
      type: object
      properties:
        id:
          $ref: '#/components/schemas/BillingPaymentMethodID'
        type:
          $ref: '#/components/schemas/BillingPaymentMethodType'
        active:
          $ref: '#/components/schemas/BillingPaymentMethodActive'
        description:
          $ref: '#/components/schemas/BillingPaymentMethodDescription'
        card_last_four:
          $ref: '#/components/schemas/BillingPaymentMethodCardLastFour'
        card_type:
          $ref: '#/components/schemas/BillingPaymentMethodCardType'
        expiry_date:
          $ref: '#/components/schemas/BillingPaymentMethodExpiryDate'
        last_updated:
          $ref: '#/components/schemas/BillingPaymentMethodLastUpdated'
    AssociatedPaymentMethods:
      title: AssociatedPaymentMethods
      type: object
      properties:
        associated_payment_methods:
          type: array
          items:
            $ref: '#/components/schemas/BillingPaymentMethodForAddress'
    CreateBillingAddressResult:
      title: CreateBillingAddressResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/BillingAddress'
    BillingAddressResult:
      title: BillingAddressResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/BillingAddressWithPaymentMethods'
    BillingInvoiceResult:
      title: BillingInvoiceResult
      type: object
      properties:
        result:
          $ref: '#/components/schemas/BillingInvoice'
    UpdateBillingPayPalSubscriptionRequest:
      title: UpdateBillingPayPalSubscriptionRequest
      type: object
      required:
        - paypal_order_id
        - paypal_subscription_id
      properties:
        paypal_order_id:
          type: string
          description: ID of the order that is returned from PayPal SDK onApprove
        paypal_subscription_id:
          type: string
          description: ID of the subscription that is returned from PayPal SDK onApprove
    BillingPaymentMethodResult:
      title: BillingPaymentMethodResult
      properties:
        result:
          $ref: '#/components/schemas/BillingPaymentMethod'
    WAFFirewallEventsSourceResponseData:
      title: WAFFirewallEventsSourceResponseData
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WAFFirewallEventsSourceResponseViewer'
    WAFFirewallEventsSourceResponse:
      title: WAFFirewallEventsSourceResponse
      allOf:
        - $ref: '#/components/schemas/BasicReportingDataResponse'
        - $ref: '#/components/schemas/WAFFirewallEventsSourceResponseData'
    WAFFirewallEventsResponseZone:
      title: WAFFirewallEventsResponseZone
      properties:
        __typename:
          $ref: '#/components/schemas/ResponseZoneType'
        series:
          type: array
          items:
            $ref: '#/components/schemas/WAFFirewallEventsResponseZoneSeries'
    WAFFirewallEventsResponseViewer:
      title: WAFFirewallEventsResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/WAFFirewallEventsResponseZone'
    ZoneFirewallEventsAdaptiveByTimeGroupsType:
      title: ZoneFirewallEventsAdaptiveByTimeGroupsType
      description: name of the property
      example: ZoneFirewallEventsAdaptiveByTimeGroupsType
      enum:
        - ZoneFirewallEventsAdaptiveByTimeGroupsType
    ZoneFirewallEventsAdaptiveByTimeGroupsAvg:
      title: ZoneFirewallEventsAdaptiveByTimeGroupsAvg
      properties:
        __typename:
          description: name of the property
          example: ZoneFirewallEventsAdaptiveByTimeGroupsAvg
          enum:
            - ZoneFirewallEventsAdaptiveByTimeGroupsAvg
        sampleInterval:
          $ref: '#/components/schemas/SampleInterval'
    WAFEventsTimeResponseZone:
      title: WAFEventsTimeResponseZone
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseZoneType'
            distribution:
              type: array
              items:
                $ref: '#/components/schemas/WAFEventsTimeResponseZoneDistribution'
    WAFEventsTimeResponseZones:
      title: WAFEventsTimeResponseZones
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/WAFEventsTimeResponseZone'
    WAFEventsTimeResponseViewer:
      title: WAFEventsTimeResponseViewer
      properties:
        viewer:
          type: object
          properties:
            __typename:
              $ref: '#/components/schemas/ResponseViewerType'
            zones:
              type: array
              items:
                $ref: '#/components/schemas/WAFEventsTimeResponseZones'
    ZoneHttpRequestsAdaptiveGroupsDimensionsStringMetric:
      title: ZoneHttpRequestsAdaptiveGroupsDimensionsStringMetric
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
        metric:
          type: string
          example: '100016'
        ts:
          $ref: '#/components/schemas/DateTime'
    ZoneHttpRequestsAdaptiveGroupsDimensionsStringMetricDescription:
      title: ZoneHttpRequestsAdaptiveGroupsDimensionsStringMetricDescription
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
        description:
          type: string
          example: AMAZON-AES
        metric:
          type: string
          example: '100016'
        ts:
          $ref: '#/components/schemas/DateTime'
    ZoneHttpRequestsAdaptiveGroupsDimensionsIntMetric:
      title: ZoneHttpRequestsAdaptiveGroupsDimensionsIntMetric
      type: object
      properties:
        __typename:
          $ref: '#/components/schemas/ZoneHttpRequestsAdaptiveGroupsDimensionsType'
        metric:
          type: integer
          example: 404
    CDNURL:
      title: CDNURL
      type: string
      description: CDN URL that can be used to view the site before it goes live
      example: 88888888p.onrocket.site
    SFTPIPAddress:
      title: SFTPIPAddress
      type: string
      description: SSH (if enabled) and FTP (w/ TLS) IP Address used to connect to the site
      example: 192.168.1.1
    SFTPUsername:
      title: SFTPUsername
      type: string
      description: Username used to log into SFTP (and/or SSH, if enabled)
      example: userabcd1234
    SiteDiskUsage:
      title: SiteDiskUsage
      type: integer
      description: Disk usage in kb
      example: 1000000
    SiteStatus:
      title: SiteStatus
      type: string
      description: Status of the site
      enum:
        - active
        - deleting
        - pending
        - locked
      example: active
    PartnerSiteType:
      title: PartnerSiteType
      type: integer
      description: Type of site. 0 == WordPress, 1 == static site, 2 == AI Builder
      enum:
        - 0
        - 1
        - 2
    SiteLabel:
      type: string
      description: A label which can be used to identify the site separately from the site's domain
      nullable: true
      example: agencypartner1::site1::abcd
    LocationID:
      title: LocationID
      type: integer
      description: ID of the location. Use the List Site locations API to get the location ID.
      example: 1
    WordPressAdminUsername:
      title: WordPressAdminUsername
      type: string
      description: WordPress admin username
      example: superlongadminusername
    WordPressAdminPassword:
      title: WordPressAdminPassword
      type: string
      description: WordPress admin password
      example: b38yt3M#ORJ#nu3gh3irj3hrug###D%
    WordPressAdminEmail:
      title: WordPressAdminEmail
      type: string
      description: WordPress admin email
      example: email@domain.tld
    WordPressMultisite:
      title: WordPressMultisite
      type: boolean
      description: 'If the site will use WordPress Multisite: https://wordpress.org/documentation/article/wordpress-glossary/#multisite'
      example: true
    SiteType:
      title: SiteType
      type: integer
      description: Type of site. 0 == WordPress, 1 == static site
      enum:
        - 0
        - 1
        - 2
    BaseDomain:
      type: string
      description: Base domain without any subdomains. Example is for sub.domain.tld
      example: domain.tld
    CustomSSL:
      nullable: true
      description: custom ssl information for this domain. ssl is managed by Cloudflare if not present
      oneOf:
        - $ref: '#/components/schemas/CustomSSLResponse'
        - $ref: '#/components/schemas/NullType'
      example:
        id: 1634ccc1-14a2-46b6-b886-95bdcc2efdab
        site_id: 12345
        serial_number: 398afaa14450d29e7a0905519a3e94cd0
        fingerprint: 1661186b8e38e79f434e4549a2d53f84716cfff7c45d334bbc67c9d41d1e3be6
        issuer: LetsEncrypt
        uploaded_on: '2026-01-07 18:31:22'
        issued_on: '2026-01-05 20:49:35'
        expires_on: '2026-03-06 20:49:35'
    CertificateAuthority:
      title: CertificateAuthority
      type: string
      description: Certificate Authority that was used to issue SSL certificates for the site
      example: google
      enum:
        - google
        - lets_encrypt
        - ssl_com
        - digicert
    DisplayDomain:
      type: string
      description: Full domain name of the domain (UTF-8 characters present)
      example: sub.domain.tld
    Domain:
      type: string
      description: Full domain name of the domain (UTF-8 converted to punycode)
      example: sub.domain.tld
    DomainType:
      type: string
      description: Type of domain (normal = apex [i.e. domain.tld], subdomain = subdomain other than www, www = www.$domain)
      enum:
        - normal
        - subdomain
        - www
    SubDomain:
      type: string
      description: If this domain is a sub-domain this will be the sub-domain value. Otherwise it will be the domain without TLD. Example is for sub.domain.tld
      example: sub
    ReportingDurationInt:
      type: integer
      description: Number of hours to provide logs for
      example: 48
      enum:
        - 1
        - 6
        - 12
        - 24
        - 48
        - 72
    EdgeSettingAllowFalse:
      description: Whether the type of visitor/traffic is allowed
      type: boolean
      example: false
      default: false
    EdgeSettingAvailable:
      description: Whether the edge setting can be used. False means the edge setting is not available for use.
      type: boolean
      example: false
    EdgeSettingEnabledFalse:
      description: Whether the edge setting is enabled
      type: boolean
      example: false
      default: false
    EdgeSettingsWAFBypass:
      title: EdgeSettingsWAFBypass
      type: object
      description: Bypassing the WAF for users logged into WordPress
      properties:
        enabled:
          $ref: '#/components/schemas/EdgeSettingEnabledFalse'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeSettingsUserAgentEmptySettings:
      title: EdgeSettingsUserAgentEmptySettings
      type: object
      description: Whether empty user-agents are allowed to access the site
      properties:
        allow:
          $ref: '#/components/schemas/EdgeSettingAllowFalse'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeSettingsUserAgentGoHttpClientSettings:
      title: EdgeSettingsUserAgentGoHttpClientSettings
      type: object
      description: Whether go-http-client user-agents are allowed to access the site
      properties:
        allow:
          $ref: '#/components/schemas/EdgeSettingAllowFalse'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeSettingsLoginRegistrationProtection:
      title: EdgeSettingsLoginRegistrationProtection
      description: Protects WooCommerce login and registration from being accessed by untrusted sources via a managed challenge
      type: object
      properties:
        enabled:
          $ref: '#/components/schemas/EdgeSettingEnabledFalse'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    EdgeSettingEnabledTrue:
      description: Whether the edge setting is enabled
      type: boolean
      example: false
      default: false
    EdgeSettingsWPLoginChallenge:
      title: EdgeSettingsWPLoginChallenge
      type: object
      description: Whether managed challenges are issued on login attempts to wp-login.php
      properties:
        enabled:
          $ref: '#/components/schemas/EdgeSettingEnabledTrue'
        available:
          $ref: '#/components/schemas/EdgeSettingAvailable'
    FeaturedPlugin:
      title: FeaturedPlugin
      type: object
      properties:
        name:
          $ref: '#/components/schemas/PluginName'
        description:
          type: string
          description: Description of the featured plugin
        uninstall_description:
          type: string
          description: Description of the featured plugin after it has been installed
        icons:
          type: object
          description: Icons of various sizes
          properties:
            1x:
              type: string
              description: Link to a 128x128px plugin icon
              example: https://ps.w.org/akismet/assets/icon-128x128.png?rev=2818463
            2x:
              type: string
              description: Link to a 256x256px plugin icon
              example: https://ps.w.org/akismet/assets/icon-256x256.png?rev=2818463
        status:
          type: string
          description: Plugin status
          enum:
            - active
            - inactive
            - not_installed
        update:
          type: string
          description: If the plugin has any updates available
          example: none
          enum:
            - available
            - none
        version:
          $ref: '#/components/schemas/PluginVersion'
        title:
          $ref: '#/components/schemas/PluginTitle'
    ListFeaturedPluginsResult:
      title: ListFeaturedPluginsResult
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/FeaturedPlugin'
    ListFeaturedPluginsResponse:
      title: ListFeaturedPluginsResponse
      allOf:
        - $ref: '#/components/schemas/BasicResponse'
        - $ref: '#/components/schemas/Metadata'
        - $ref: '#/components/schemas/ListFeaturedPluginsResult'
    QuotaSetter:
      title: QuotaSetter
      type: integer
      description: FTP disk space quota in MB (0 = unlimited)
      example: 500
      default: 0
    SiteTaskMetaDataDict:
      title: SiteTaskMetaDataDict
      type: object
      example:
        cloned_site_id: 1234567890
        template_replacements:
          - key: __CONTACT_EMAIL__
            value: hello@rocket.net
      properties:
        meta_data:
          $ref: '#/components/schemas/SiteMetadata'
    SiteTemplateID:
      title: SiteTemplateID
      type: string
      description: Unique ID (UUID) of the site template
      example: 7ec25c75-b490-4365-bc55-7df7f1aa7c5e
      format: uuid
    SiteUserSite:
      title: SiteUserSite
      type: object
      properties:
        id:
          type: integer
          description: ID of the Site the Site User has access to
          example: 8880000888
        domain:
          type: string
          description: Domain of the Site the Site User has access to (UTF-8 via punycode)
          example: some.domain.tld
        display_domain:
          type: string
          description: Display domain of the Site the Site User has access to (UTF-8 supported)
          example: some.domain.tld
        rocket_url:
          type: string
          description: Rocket URL of the Site the Site User has access to
          example: abcd.onrocket.com
        location:
          type: string
          description: Location of the Site the Site User has access to
          example: NL - Amsterdam
        ftp_ip_address:
          type: string
          description: FTP IP address of the Site the Site User has access to
          example: 123.456.789.012
        sftp_username:
          type: string
          description: SFTP username of the Site the Site User has access to
          example: siteuser
        disk_usage:
          type: integer
          description: Disk usage of the Site the Site User has access to
          example: 100000000
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        production:
          type: integer
          description: If the site is a production site (1) or a staging site (0)
          enum:
            - 0
            - 1
        staging:
          type: object
          properties:
            staging_id:
              type: integer
              description: ID of the staging site
              example: 1234567890
            staging_status:
              type: string
              description: Status of the staging site
              enum:
                - active
                - deleting
                - pending
                - locked
        site_type:
          type: integer
          description: Type of site. 0 == WordPress, 1 == static site
          enum:
            - 0
            - 1
        label:
          type: string
          description: Label of the Site
          example: some.domain.tld
        metadata:
          type: string
          description: Metadata tagged to the Site
          example: '{"some": "metadata"}'
        status:
          type: string
          description: Status of the Site
          enum:
            - Active
            - Declined
            - Invited
        status_reason:
          $ref: '#/components/schemas/SiteStatusReason'
    SiteUsersSiteList:
      title: SiteUsersSiteList
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/SiteUserSite'
    ListSiteUserSitesResponse:
      title: ListSiteUserSitesResponse
      allOf:
        - $ref: '#/components/schemas/BasicListResponse'
        - $ref: '#/components/schemas/SiteUsersSiteList'
    PasswordStrengthResult:
      title: PasswordStrengthResult
      type: object
      properties:
        result:
          type: object
          properties:
            strength:
              type: integer
              description: Numerical representation of password strength
              example: 90
            strong:
              type: boolean
              description: Whether the given password is strong enough to be used on the platform
              example: true
    SetUserPasswordRequest:
      title: SetUserPasswordRequest
      type: object
      required:
        - password
      properties:
        password:
          type: string
          description: User password
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      x-bearerInfoFunc: app.auth.connexion.auth_via_openapi_spec
