swagger: "2.0"
schemes:
  - https
host: watchful.li
basePath: /api/v1
info:
  title: watchful.li
  version: 1.0.0
  x-apisguru-categories:
    - hosting
  x-logo:
    backgroundColor: "#1B4E65"
    url: https://d2071nnd6m4201.cloudfront.net/templates/balloon/images/logo.svg
  x-origin:
    - converter:
        url: https://github.com/lucybot/api-spec-converter
        version: 2.7.31
      format: swagger
      url: hhttps://app.watchful.net/api/v1/api-docs/
      version: "1.2"
  x-providerName: watchful.li
externalDocs:
  url: https://watchful.li/faqs/tools/watchful-rest-api.html
tags:
  - description: Operations about audits
    name: audits
  - description: Operations about extensions
    name: extensions
  - description: Operations about feedbacks
    name: feedbacks
  - description: Operations about logs
    name: logs
  - description: Create reports in PDF
    name: reports
  - description: Operations about sites
    name: sites
  - description: Operations about SsoUser
    name: ssousers
  - description: Operations about tags
    name: tags
paths:
  /audits:
    get:
      description: Returns a list of audits
      operationId: getAudits
      parameters:
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Audit"
        "403":
          description: Invalid API Key
      summary: Get a list of audits
      tags:
        - audits
  /audits/metadata:
    get:
      description: Returns a list of fields
      operationId: getFieldsAudits
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of fields
      tags:
        - audits
  "/audits/{id}":
    delete:
      description: Delete a specific audit
      operationId: deleteAuditById
      parameters:
        - description: ID of audit that needs to be deleted
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Audit correctly deleted
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Delete a specific audit
      tags:
        - audits
    get:
      description: Returns a audit based on ID
      operationId: getAuditById
      parameters:
        - description: ID of audit that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Audit"
        "400":
          description: Invalid ID
        "403":
          description: Invalid API Key
      summary: Find audit by ID
      tags:
        - audits
  /extensions:
    get:
      description: Returns a list Extensions
      operationId: getExtensions
      parameters:
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: ext_name
          required: false
          type: string
        - description: List of sites id separated by comma
          in: query
          name: siteids
          required: false
          type: string
        - description: Do a 'LIKE' search, you can also use '%'. technical name of the extension com_xxxx
          in: query
          name: ext_prefix
          required: false
          type: string
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: version
          required: false
          type: string
        - description: update available for this extension
          enum:
            - 1
            - 0
          in: query
          name: vUpdate
          required: false
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Extension"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid
      summary: Get a list Extensions
      tags:
        - extensions
  /extensions/metadata:
    get:
      description: Returns a list of fields
      operationId: getFieldsExtensions
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of fields
      tags:
        - extensions
  "/extensions/{id}/ignore":
    post:
      description: Set 'ignore updates' for a given extension / site_id
      operationId: ignoreExtensionUpdate
      parameters:
        - description: ID of the extension
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Extension successfully updated
          schema:
            type: string
        "404":
          description: Update not found for the given extension
      summary: Set 'ignore updates' for a given extension / site_id
      tags:
        - extensions
  "/extensions/{id}/unignore":
    post:
      description: Remove 'ignore updates' for a given extension
      operationId: unignoreExtensionUpdate
      parameters:
        - description: ID of the extension
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Extension successfully updated
          schema:
            type: string
        "404":
          description: Update not found for the given extension
      summary: Remove 'ignore updates' for a given extension
      tags:
        - extensions
  "/extensions/{id}/update":
    post:
      description: Update the extension on the remote site
      operationId: updateExtension
      parameters:
        - description: ID of the extension
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Extension successfully updated
          schema:
            type: string
        "404":
          description: Update not found for the given extension
      summary: Update the extension on the remote site
      tags:
        - extensions
  /feedbacks:
    get:
      description: Returns a list of feedbacks
      operationId: getFeedbacks
      parameters:
        - description: Fields to return separate by comas (es. name,id)
          in: query
          name: fields
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Feedback"
        "403":
          description: Invalid API Key
      summary: Get feedbacks
      tags:
        - feedbacks
    post:
      description: Create a feedback
      operationId: createFeedbacks
      parameters:
        - description: JSON object Feedback
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/Feedback"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Audit"
        "201":
          description: Saved successfully
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Not saved
      summary: Create a feedback
      tags:
        - feedbacks
  /feedbacks/metadata:
    get:
      description: Returns a list of fields
      operationId: getFieldsFeedbacks
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of fields
      tags:
        - feedbacks
  /logs:
    get:
      description: Returns a list of logs
      parameters:
        - description: Type of the log
          enum:
            - ""
            - plugin_sends_error
            - curlerror
            - modified_file
            - word_not_in_homepage
            - file_not_exists
            - update_available
            - new_extension
            - deleted_extension
            - extension_not_saved
            - modified_value_files
            - custom
          in: query
          name: log_type
          type: string
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: log_entry
          required: false
          type: string
        - description: Logs after this date, format YYYY-MM-DD HH:MM:SS
          in: query
          name: from
          required: false
          type: string
        - description: Logs before this date, format YYYY-MM-DD HH:MM:SS
          in: query
          name: to
          required: false
          type: string
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Log"
        "403":
          description: Invalid API Key
      summary: Get a list of logs
      tags:
        - logs
  /logs/export:
    get:
      description: Returns a file contain the list of logs
      operationId: getExportLogs
      parameters:
        - description: Format of exported file (PDF or CSV)
          enum:
            - csv
            - pdf
          in: query
          name: format
          required: true
          type: string
        - description: Site id of the log
          format: int64
          in: query
          name: site
          required: false
          type: integer
        - description: Type of the log
          enum:
            - ""
            - plugin_sends_error
            - curlerror
            - modified_file
            - word_not_in_homepage
            - file_not_exists
            - update_available
            - new_extension
            - deleted_extension
            - extension_not_saved
            - modified_value_files
            - custom
          in: query
          name: filter_type
          type: string
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: search
          required: false
          type: string
        - description: Logs after this date, format YYYY-MM-DD HH:MM:SS
          in: query
          name: startdate
          required: false
          type: string
        - description: Logs before this date, format YYYY-MM-DD HH:MM:SS
          in: query
          name: enddate
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: startid
          required: false
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
        "403":
          description: Invalid API Key
      summary: Get a CSV or PDF file contain the list of logs
      tags:
        - logs
  /logs/metadata:
    get:
      description: Returns a list of fields
      operationId: getFieldsLogs
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of fields
      tags:
        - logs
  /logs/types:
    get:
      description: Returns a list of log types
      operationId: getTypesLogs
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of log types
      tags:
        - logs
  "/logs/{id}":
    delete:
      description: Delete a specific log
      operationId: deleteLogById
      parameters:
        - description: ID of log that needs to be deleted
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Log correctly deleted
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Delete a specific log
      tags:
        - logs
  /packages:
    post:
      consumes:
        - application/x-www-form-urlencoded
      responses:
        default:
          description: No description
  "/reports/sites/{id}":
    get:
      description: Returns a PDF report based on a site ID
      parameters:
        - description: ID that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Start of the report, format YYYY-MM-DD, default today-30day "
          in: query
          name: from
          required: false
          type: string
        - description: End of the report, format YYYY-MM-DD, default today
          in: query
          name: to
          required: false
          type: string
        - description: "Type of reports separate by comas: Ga,Logs,Uptime"
          in: query
          name: reports
          required: false
          type: string
        - description: Type of the log to show in the report
          enum:
            - ""
            - plugin_sends_error
            - curlerror
            - modified_file
            - word_not_in_homepage
            - file_not_exists
            - update_available
            - new_extension
            - deleted_extension
            - extension_not_saved
            - modified_value_files
          in: query
          name: log_type
          type: string
        - description: Define if you want show previous values in Google Analytics graph
          enum:
            - 0
            - 1
          in: query
          name: compare
          type: integer
      produces:
        - application/pdf
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Reports"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Returns a PDF report for a specific site
      tags:
        - reports
  "/reports/tags/{id}":
    get:
      description: Returns a report based on a site ID
      parameters:
        - description: ID that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Start of the report, format YYYY-MM-DD, default today-30day "
          in: query
          name: from
          required: false
          type: string
        - description: End of the report, format YYYY-MM-DD, default today
          in: query
          name: to
          required: false
          type: string
        - description: "Type of reports separate by comas: Ga,Logs,Uptime"
          in: query
          name: reports
          required: false
          type: string
        - description: Type of the log to show in the report
          enum:
            - ""
            - plugin_sends_error
            - curlerror
            - modified_file
            - word_not_in_homepage
            - file_not_exists
            - update_available
            - new_extension
            - deleted_extension
            - extension_not_saved
            - modified_value_files
          in: query
          name: log_type
          type: string
        - description: Define if you want show previous values in Google Analytics graph
          enum:
            - 0
            - 1
          in: query
          name: compare
          type: integer
      produces:
        - application/pdf
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Reports"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Find sites by ID
      tags:
        - reports
  /sites:
    get:
      description: Returns a list of Sites
      operationId: getSites
      parameters:
        - description: List of sites id separated by comma
          in: query
          name: siteids
          required: false
          type: string
        - description: Site name. Do a 'LIKE' search, you can also use '%'
          in: query
          name: name
          required: false
          type: string
        - description: Access URL. Do a 'LIKE' search, you can also use '%'
          in: query
          name: access_url
          required: false
          type: string
        - description: Joomla version. Do a 'LIKE' search, you can also use '%'
          in: query
          name: j_version
          required: false
          type: string
        - description: Ip address. Do a 'LIKE' search, you can also use '%'
          in: query
          name: ip
          required: false
          type: string
        - description: "Joomla core update status (1: update required, 0: update not required)"
          enum:
            - 1
            - 0
          in: query
          name: jUpdate
          type: integer
        - description: canUpdate
          enum:
            - 1
            - 0
          in: query
          name: canUpdate
          type: integer
        - description: Is published
          enum:
            - 1
            - 0
          in: query
          name: published
          required: false
          type: integer
        - description: Has errors
          in: query
          name: error
          required: false
          type: string
        - in: query
          name: nbUpdates
          required: false
          type: string
        - description: Is online
          enum:
            - 1
            - 0
          in: query
          name: up
          required: false
          type: integer
        - description: Fields to return separated by commas (e.g. name,id)
          in: query
          name: fields
          required: false
          type: string
        - description: Number of objects to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Get a list of Sites
      tags:
        - sites
    post:
      description: Create a site
      operationId: createSite
      parameters:
        - description: JSON object Site
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/PostSite"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "201":
          description: Saved successfully
        "400":
          description: Invalid data
        "403":
          description: Not allowed to add sites
        "404":
          description: Not saved
      summary: Create a site
      tags:
        - sites
  /sites/metadata:
    get:
      description: Returns a list of fields
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of fields
      tags:
        - sites
  "/sites/{id}":
    delete:
      description: Delete a specific Site
      parameters:
        - description: ID of Site that needs to be deleted
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Deleted successfully
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Delete a specific Site
      tags:
        - sites
    get:
      description: Return a site based on ID
      operationId: getSiteById
      parameters:
        - description: ID that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Find sites by ID
      tags:
        - sites
    put:
      description: Update a site
      parameters:
        - description: ID of the website that needs to be update
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: JSON object Site
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/PostSite"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Updated successfully
          schema:
            $ref: "#/definitions/Site"
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Update a site
      tags:
        - sites
  "/sites/{id}/audits":
    get:
      description: Return audits for a specific website
      operationId: getSiteAudits
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: ORDER by this field
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Audits"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Return audits for a specific website
      tags:
        - sites
    post:
      description: Create an audit for the site
      operationId: createAudits
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Audit"
        "201":
          description: Saved successfully
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Not saved
      summary: Create an audit for the site
      tags:
        - sites
  "/sites/{id}/backupnow":
    post:
      description: Add the site to the backup queue
      operationId: addSiteToBackupQueue
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Add the site to the backup queue
      tags:
        - sites
  "/sites/{id}/backupprofiles":
    get:
      description: Return backup profile
      operationId: getBackupProfiles
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Return backup profile
      tags:
        - sites
  "/sites/{id}/backups":
    get:
      description: List of latest backups
      operationId: getListBackups
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: List of latest backups
      tags:
        - sites
  "/sites/{id}/backupstart":
    post:
      description: Start a remote backup for the site
      operationId: startSiteBackup
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Start a remote backup for the site
      tags:
        - sites
  "/sites/{id}/backupstep":
    post:
      description: Step (continue) a remote backup for the site
      operationId: stepSiteBackup
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Step (continue) a remote backup for the site
      tags:
        - sites
  "/sites/{id}/extensions":
    get:
      description: Get extensions for a site
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: ORDER by this field
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Extension"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid
      summary: Get extensions for a site
      tags:
        - sites
    post:
      operationId: installExtension
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: URL to install the extension from
          format: url
          in: query
          name: url
          required: true
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Install extension
      tags:
        - sites
  "/sites/{id}/logs":
    get:
      description: Return logs for a specific website
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: log_entry
          required: false
          type: string
        - description: Type of the log
          enum:
            - ""
            - plugin_sends_error
            - curlerror
            - modified_file
            - word_not_in_homepage
            - file_not_exists
            - update_available
            - new_extension
            - deleted_extension
            - extension_not_saved
            - modified_value_files
          in: query
          name: log_type
          type: string
        - description: Logs after this date, format YYYY-MM-DD HH:MM:SS
          in: query
          name: from
          required: false
          type: string
        - description: Logs before this date, format YYYY-MM-DD HH:MM:SS
          in: query
          name: to
          required: false
          type: string
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Log"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Return logs for a specific website
      tags:
        - sites
    post:
      description: Create a custom log for a specific website
      operationId: CreateLog
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: JSON object Log (only type custom)
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/PostLog"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Log"
        "201":
          description: Saved successfully
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Not saved
      summary: Create a custom log for a specific website
      tags:
        - sites
  "/sites/{id}/monitor":
    delete:
      description: Return boolean
      operationId: deleteMonitor
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Monitor"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Delete uptime monitor
      tags:
        - sites
    post:
      description: Return boolean
      operationId: postMonitor
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Monitor"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Post uptime monitor
      tags:
        - sites
  "/sites/{id}/scanner":
    get:
      description: Scan the site for malware
      operationId: scanner
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Scan the site for malware
      tags:
        - sites
  "/sites/{id}/seo":
    get:
      description: SEO analyze for a page
      operationId: seoAnalyze
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: SEO analyze for a page
      tags:
        - sites
  "/sites/{id}/tags":
    get:
      description: Return tags for a specific website
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: name
          required: false
          type: string
        - description: Bootstrap color of the tag
          enum:
            - ""
            - default
            - success
            - warning
            - important
            - info
            - inverse
          in: query
          name: type
          type: string
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: ORDER by this field
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Tag"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Return tags for a specific website
      tags:
        - sites
    post:
      description: Add tags for a specific website
      operationId: postTags
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: JSON object Tag
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/Tag"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "201":
          description: Saved successfully
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Add tags for a specific website
      tags:
        - sites
  "/sites/{id}/updatejoomla":
    post:
      description: Update Joomla core on the remote site
      operationId: updateJoomla
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Joomla core successfully updated
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID or Joomla Update not found
      summary: Update Joomla core on the remote site
      tags:
        - sites
  "/sites/{id}/uptime":
    get:
      description: Return uptime data
      operationId: getUptime
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Uptime"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Return uptime data
      tags:
        - sites
  "/sites/{id}/validate":
    get:
      description: validate the site
      operationId: validateSite
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Log"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: validate the site, return the new logs
      tags:
        - sites
  "/sites/{id}/validatedebug":
    get:
      operationId: validateDebugSite
      parameters:
        - description: ID of the website
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Log"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: validate the site, return the debug information
      tags:
        - sites
  /ssousers:
    get:
      description: Returns a list of SSO Users
      operationId: getSsoUsers
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/SsoUsers"
        "403":
          description: Invalid API Key
      summary: Get a list of SSO Users
      tags:
        - ssousers
    post:
      description: Create a SSO User
      operationId: CreateSsoUsers
      parameters:
        - description: JSON object SsoUsers
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/SsoUsers"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/SsoUsers"
        "201":
          description: Saved successfully
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Not saved
      summary: Create a SSO User
      tags:
        - ssousers
  "/ssousers/{id}":
    delete:
      description: Delete a specific SSO User
      operationId: deleteSsoUserById
      parameters:
        - description: ID of SSO User that needs to be deleted
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: SSO User correctly deleted
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Delete a specific SSO User
      tags:
        - ssousers
    get:
      description: Returns a SSO User based on ID
      operationId: getSsoUsersById
      parameters:
        - description: ID of SSO User that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/SsoUsers"
        "400":
          description: Invalid ID
        "403":
          description: Invalid API Key
      summary: Find SSO User by ID
      tags:
        - ssousers
    put:
      description: Update a SSO User
      operationId: UpdateSsoUsers
      parameters:
        - description: ID of SSO User that needs to be updated
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: JSON object SsoUsers
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/SsoUsers"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/SsoUsers"
        "201":
          description: Updated successfully
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Not saved
      summary: Update a SSO User
      tags:
        - ssousers
  /tags:
    get:
      description: Returns a list of tags
      parameters:
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: name
          required: false
          type: string
        - description: Bootstrap color of the tag
          enum:
            - ""
            - default
            - success
            - warning
            - important
            - info
            - inverse
          in: query
          name: type
          type: string
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Tag"
        "403":
          description: Invalid API Key
      summary: Get a list of tags
      tags:
        - tags
    post:
      description: Create a tag
      operationId: CreateTags
      parameters:
        - description: JSON object Tag
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/Tag"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Tag"
        "201":
          description: Saved successfully
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Not saved
      summary: Create a tag
      tags:
        - tags
  /tags/metadata:
    get:
      description: Returns a list of fields
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            type: string
      summary: Get the list of fields
      tags:
        - tags
  "/tags/{id}":
    delete:
      description: Delete a specific tag
      parameters:
        - description: ID of tag that needs to be deleted
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Tag correctly deleted
          schema:
            type: string
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Delete a specific tag
      tags:
        - tags
    get:
      description: Returns a tag based on ID
      operationId: getTagById
      parameters:
        - description: ID of tag that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Tag"
        "400":
          description: Invalid ID
        "403":
          description: Invalid API Key
      summary: Find tag by ID
      tags:
        - tags
    put:
      description: Update a tag
      operationId: UpdateTag
      parameters:
        - description: ID of tag
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: JSON object of the updated tag
          in: body
          name: body
          required: true
          schema:
            $ref: "#/definitions/Tag"
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: Updated successfully
          schema:
            $ref: "#/definitions/Tag"
        "400":
          description: Invalid data
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Update a tag
      tags:
        - tags
  "/tags/{id}/sites":
    get:
      description: Returns a list of sites based with a specific tag id
      operationId: getSitesByTags
      parameters:
        - description: ID of tag that needs to be fetched
          format: int64
          in: path
          minimum: 1
          name: id
          required: true
          type: integer
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: name
          required: false
          type: string
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: access_url
          required: false
          type: string
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: j_version
          required: false
          type: string
        - description: Do a 'LIKE' search, you can also use '%'
          in: query
          name: ip
          required: false
          type: string
        - description: Joomla core update
          enum:
            - 1
            - 0
          in: query
          name: jUpdate
          type: integer
        - description: is published
          enum:
            - 1
            - 0
          in: query
          name: published
          required: false
          type: integer
        - description: have errors
          in: query
          name: error
          required: false
          type: string
        - in: query
          name: nbUpdates
          required: false
          type: string
        - description: is the website online
          enum:
            - 1
            - 0
          in: query
          name: up
          required: false
          type: integer
        - description: "Fields to return separate by comas: name,id"
          in: query
          name: fields
          required: false
          type: string
        - description: Number of object to return (max 100, default 25)
          format: int64
          in: query
          minimum: 1
          name: limit
          required: false
          type: integer
        - description: Start of the return (default 0)
          format: int64
          in: query
          minimum: 0
          name: limitstart
          required: false
          type: integer
        - description: "ORDER by this field separete by comas. Add + / - after field for set ASC / DESC: type+,name-"
          in: query
          name: order
          required: false
          type: string
      produces:
        - application/json
        - application/xml
        - text/plain
      responses:
        "200":
          description: No response was specified
          schema:
            $ref: "#/definitions/Site"
        "403":
          description: Invalid API Key
        "404":
          description: Invalid ID
      summary: Find sites by tag ID
      tags:
        - tags
definitions:
  Audit:
    properties:
      id:
        description: Unique identifier for the audit
        format: int64
        type: integer
    required:
      - id
  Audits:
    items:
      $ref: "#/definitions/Audit"
    type: array
  Extension:
    properties:
      date:
        description: Date of release
        type: string
      ext_name:
        description: Extension name
        type: string
      idx_site:
        description: Unique identifier for the site
        format: int64
        type: integer
      newVersion:
        description: New version
        type: string
      type:
        description: Datetime of the log
        format: date-format
        type: string
      url:
        description: Author URL
        type: string
      vUpdate:
        description: Update is available
        type: integer
      version:
        description: Extension version
        type: string
    required:
      - idx_site
      - type
  Feedback:
    properties:
      id:
        description: Unique identifier for the feedback
        format: int64
        type: integer
    required:
      - id
  Log:
    properties:
      Site name:
        description: Name of the site / readyonly
        type: string
      id_log:
        description: Unique identifier for the log
        format: int64
        type: integer
      idx_site:
        description: Unique identifier for the site
        format: int64
        type: integer
      log_date:
        description: Datetime of the log
        format: date-format
        type: string
      log_entry:
        description: Log information
        type: string
      log_level:
        description: Level of log
        format: int64
        type: integer
      log_type:
        description: Type of log
        type: string
      userid:
        description: Unique identifier for the user
        format: int64
        type: integer
    required:
      - id_log
      - idx_site
      - log_date
      - log_entry
      - log_level
      - userid
  Monitor: {}
  PostLog:
    properties:
      log_date:
        description: Datetime of the log
        format: date-format
        type: string
      log_entry:
        description: Log information
        type: string
      log_level:
        description: Level of log
        format: int64
        type: integer
    required:
      - log_entry
      - log_level
  PostSite:
    properties:
      access_url:
        description: URL of the site
        type: string
      admin_url:
        description: Adminsitration URL
        type: string
      akeebaProfile:
        description: Akeeba Profile
        format: date-format
        type: string
      backupSchedule:
        description: Backup Schedule
        type: string
      dateBackup:
        description: Date backup
        format: date-format
        type: string
      name:
        description: Friendly name for the site
        type: string
      notes:
        description: Personnal note for the site
        type: string
      published:
        description: Published status of site
        type: boolean
      secret_word:
        description: Watchful secret word
        type: string
      tags:
        description: JSON encoded array of tags for the site (e.g. [{<q>name</q>:<q>mytag</q>},{<q>name</q>:<q>anothertag</q>}])
        format: json
        type: string
      word_akeeba:
        description: Akeeba backup word
        type: string
      word_check:
        description: Word checked for uptime
        type: string
    required:
      - access_url
  Reports: {}
  Site:
    properties:
      access_url:
        description: URL of the site
        type: string
      admin_url:
        description: Adminsitration URL
        type: string
      akeebaProfile:
        description: Akeeba Profile
        format: date-format
        type: string
      backupSchedule:
        description: Backup Schedule
        type: string
      canBackup:
        description: Site can be backuped
        type: boolean
      canUpdate:
        description: Site can use remote installer
        type: boolean
      dateBackup:
        description: Date backup
        format: date-format
        type: string
      date_last_check:
        description: Watchful Last check
        format: date-format
        type: string
      error:
        description: Error status of site
        type: boolean
      ip:
        description: server IP
        type: string
      jUpdate:
        description: "?"
        type: boolean
      j_version:
        description: Joomla site version
        type: string
      monitorid:
        description: Id of the associated UptimeRobot monitor
        type: boolean
      name:
        description: Friendly name for the site
        type: string
      nbUpdates:
        description: Number of updates
        format: date-format
        type: string
      new_j_version:
        description: Joomla site version
        type: string
      notes:
        description: Personnal note for the site
        type: string
      published:
        description: Published status of site
        type: boolean
      secret_word:
        description: Watchful secret word
        type: string
      siteid:
        description: Unique identifier for the site
        format: int64
        type: integer
      tags:
        description: List of tags for this site
        items: {}
        type: array
      up:
        description: Site status
        type: boolean
      word_akeeba:
        description: Akeeba backup word
        type: string
      word_check:
        description: Word checked for uptime
        type: string
    required:
      - siteid
  SsoUsers:
    properties:
      email:
        description: Email of the SSO User
        type: string
      groupid:
        description: Security Joomla group ID
        format: int64
        type: integer
      id:
        description: Unique identifier for the SSO User
        format: int64
        type: integer
      lastLoginDate:
        description: Last login date on remote site
        format: date-time
        type: string
      lastLoginSite:
        description: Site Id of the last remote login
        format: int64
        type: integer
      name:
        description: Account display name
        type: string
      password:
        description: Password of the SSO User
        type: string
      userid:
        description: Watchful user account
        format: int64
        type: integer
      username:
        description: Username of the SSO User
        type: string
    required:
      - email
      - groupid
      - id
      - name
      - password
      - userid
      - username
  Tag:
    properties:
      id:
        description: Unique identifier for the tag
        format: int64
        type: integer
      name:
        description: Friendly name for the tag
        type: string
      nbSites:
        description: Number of sites use this tag (required field id)
        type: integer
      type:
        default: default
        description: Bootstrap color of the tag
        enum:
          - default
          - success
          - warning
          - important
          - info
          - inverse
        type: string
    required:
      - id
      - name
  Uptime: {}
  Version: {}
