openapi: 3.0.0
info:
  title: Firebox Management API
  description: REST API to configure and manage Fireboxes.
  version: 1.23.0
  contact:
    name: API Support
    url: https://www.watchguard.com/wgrd-support/contact-support
  termsOfService: 
    https://www.watchguard.com/help/docs/api/Content/en-US/license_agreement.html?cshid=18007
paths:
  /health:
    get:
      description: HealthCheck URL
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'

  /v1/configuration/{accountid}/exceptions:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      summary: Retrieves exceptions saved in the specified WatchGuard Cloud account.
      tags:
        - Exceptions
      parameters:
        - in: query
          name: query
          schema:
            type: string
          description: Query string that specifies which exceptions to retrieve from
            WatchGuard Cloud, written in Lucene query syntax.
          example: object:"botnet_exception" AND address.value:"www.example.com"
      responses:
        '200':
          description: A list of all exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                    - $ref: '#/components/schemas/blocked_site_exception'
                    - $ref: '#/components/schemas/botnet_exception'
                    - $ref: '#/components/schemas/file_exception'
                    - $ref: '#/components/schemas/geolocation_exception'
                    - $ref: '#/components/schemas/ips_exception'
                    - $ref: '#/components/schemas/webblocker_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves exceptions saved in the specified WatchGuard Cloud account.
      tags:
        - Exceptions
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          schema:
            type: string
          description: Query string that specifies which exceptions to retrieve from
            WatchGuard Cloud, written in Lucene query syntax.
          example: object:"botnet_exception" AND address.value:"www.example.com"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first exception to return in the response.
          example: bse_12345_ARBHLJ70Y78rGOIGBS
      responses:
        '200':
          description: A list of all exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      anyOf:
                        - $ref: '#/components/schemas/blocked_site_exception'
                        - $ref: '#/components/schemas/botnet_exception'
                        - $ref: '#/components/schemas/file_exception'
                        - $ref: '#/components/schemas/geolocation_exception'
                        - $ref: '#/components/schemas/ips_exception'
                        - $ref: '#/components/schemas/webblocker_exception'
                  start_after:
                    type: string
                    example: bse_12345_ARBHLJ70Y78rGOIGBS
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/blockedsite:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      summary: Retrieves blocked sites exceptions saved in the specified WatchGuard
        Cloud account.
      tags:
        - Exceptions (Blocked Sites)
      parameters:
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which blocked sites exceptions
            to retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: action:"block" AND address.type:"ipv4_range"
      responses:
        '200':
          description: A list of blocked sites exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/blocked_site_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    post:
      summary: Creates a new blocked sites exception. The value of the action parameter
        specifies whether the Firebox allows or blocks traffic for the site.
      tags:
        - Exceptions (Blocked Sites)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/new_object_attributes'
                - $ref: '#/components/schemas/blocked_site_exception_base'
            example:
              device: 12345
              description: Block example.com
              address:
                type: fqdn
                value: example.com
              action: block
      responses:
        '201':
          description: The created blocked sites exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/blocked_site_exception'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/blockedsite/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified blocked sites exception.
      tags:
        - Exceptions (Blocked Sites)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the blocked sites exception to retrieve.
          example: bse_12345_ARBHLJ70Y78rGOIGBS
      responses:
        '200':
          description: The specified blocked sites exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/blocked_site_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified blocked sites exception.
      tags:
        - Exceptions (Blocked Sites)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the blocked site or blocked sites exception to update
            in your WatchGuard Cloud account.
          example: bse_12345_ARBHLJ70Y78rGOIGBS
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/object_update_attributes'
                - $ref: '#/components/schemas/blocked_site_exception_base'
              example:
                version: 1
                description: Block example.com
                address:
                  type: fqdn
                  value: example.com
                action: block
      responses:
        '201':
          description: The updated blocked sites exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/blocked_site_exception_base'
                example:
                  id: bse_12345_ARBHLJ70Y78rGOIGBS
                  object: blockedsite_exception
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  device: 12345
                  author: testuser
                  description: Block example.com
                  address:
                    type: fqdn
                    value: example.com
                  action: block
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'
    delete:
      summary: Deletes the specified blocked sites exception.
      tags:
        - Exceptions (Blocked Sites)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the blocked sites exception to delete from your WatchGuard
            Cloud account.
          example: bse_12345_ARBHLJ70Y78rGOIGBS
      responses:
        '201':
          description: The deleted blocked sites exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/blocked_site_exception_base'
                  - type: object
                    properties:
                      inactive:
                        type: boolean
                        description: Object is inactive.
                        example: true
                    required: [inactive]
                example:
                  id: bse_12345_ARBHLJ70Y78rGOIGBS
                  object: blockedsite_exception
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  device: 12345
                  author: testuser
                  description: Block example.com
                  address:
                    type: fqdn
                    value: example.com
                  action: block
                  inactive: true
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions/blockedsite:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves blocked sites exceptions saved in the specified WatchGuard
        Cloud account.
      tags:
        - Exceptions (Blocked Sites)
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which blocked sites exceptions
            to retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: action:"block" AND address.type:"ipv4_range"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first blocked sites exception to return in the response.
          example: bse_12345_ARBHLJ70Y78rGOIGBS
      responses:
        '200':
          description: A list of blocked sites exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    example: 1
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      $ref: '#/components/schemas/blocked_site_exception'
                  start_after:
                    type: string
                    example: bse_12345_ARBHLJ70Y78rGOIGBS
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/botnet:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      parameters:
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which botnet site exceptions to
            retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND address.type:"ipv4_range"
      summary: Retrieves botnet site exceptions saved in the specified WatchGuard
        Cloud account.
      tags:
        - Exceptions (Botnet)
      responses:
        '200':
          description: A list of botnet site exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/botnet_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    post:
      summary: Creates a new botnet site exception.
      tags:
        - Exceptions (Botnet)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/new_object_attributes'
                - $ref: '#/components/schemas/botnet_exception_base'
              example:
                device: 12345
                description: Allow example.com
                address:
                  type: fqdn
                  value: example.com
      responses:
        '201':
          description: The created botnet site exception.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/botnet_exception'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/botnet/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified botnet site exception.
      tags:
        - Exceptions (Botnet)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the botnet site exception to retrieve.
          example: bote_12345_8LBasn0hDNXnli4V0
      responses:
        '200':
          description: The botnet site exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/botnet_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified botnet site exception.
      tags:
        - Exceptions (Botnet)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the botnet site exception to update in your WatchGuard
            Cloud account.
          example: bote_12345_8LBasn0hDNXnli4V0
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/object_update_attributes'
                - $ref: '#/components/schemas/botnet_exception_base'
              example:
                version: 1
                description: Allow example.com
                address:
                  type: fqdn
                  value: example.com
      responses:
        '201':
          description: The updated botnet site exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/blocked_site_exception_base'
                example:
                  id: bote_12345_8LBasn0hDNXnli4V0
                  object: botnet_exception
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  device: 12345
                  author: testuser
                  description: Allow example.com
                  address:
                    type: fqdn
                    value: example.com
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'
    delete:
      summary: Deletes the specified botnet site exception.
      tags:
        - Exceptions (Botnet)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the botnet site exception to delete from your WatchGuard
            Cloud account.
          example: bote_12345_8LBasn0hDNXnli4V0
      responses:
        '201':
          description: The deleted botnet site exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/blocked_site_exception_base'
                  - type: object
                    properties:
                      inactive:
                        type: boolean
                        description: Object is inactive.
                        example: true
                    required: [inactive]
                example:
                  id: bote_12345_8LBasn0hDNXnli4V0
                  object: botnet_exception
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  device: 12345
                  author: testuser
                  description: Allow example.com
                  address:
                    type: fqdn
                    value: example.com
                  inactive: true
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions/botnet:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which botnet site exceptions to
            retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND address.type:"ipv4_range"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first botnet exception to return in the response.
          example: bote_12345_8LBasn0hDNXnli4V0
      summary: Retrieves botnet site exceptions saved in the specified WatchGuard
        Cloud account.
      tags:
        - Exceptions (Botnet)
      responses:
        '200':
          description: A list of botnet site exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      $ref: '#/components/schemas/botnet_exception'
                  start_after:
                    type: string
                    example: bote_12345_8LBasn0hDNXnli4V0
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/file:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      summary: Retrieves file exceptions saved in the specified WatchGuard Cloud account.
      tags:
        - Exceptions (File)
      parameters:
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which file exceptions to retrieve
            from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND action:"allow"
      responses:
        '200':
          description: A list of file exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/file_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    post:
      summary: Creates a new file exception.
      tags:
        - Exceptions (File)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/new_object_attributes'
                - $ref: '#/components/schemas/file_exception_base'
              example:
                device: 12345
                description: Allow Sales Presentation.
                md5: d2ffd57b48ee2ac34a4797ea44571a05
                action: allow
      responses:
        '201':
          description: The created file exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/file_exception'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/file/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified file exception.
      tags:
        - Exceptions (File)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the file exception to retrieve.
          example: file_12345_UqhDVIdx8D5iwivAX
      responses:
        '200':
          description: The file exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/file_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified file exception.
      tags:
        - Exceptions (File)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the file exception to update in your WatchGuard Cloud
            account.
          example: file_12345_UqhDVIdx8D5iwivAX
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/object_update_attributes'
                - $ref: '#/components/schemas/file_exception_base'
              example:
                version: 1
                description: Allow Sales Presentation.
                md5: d2ffd57b48ee2ac34a4797ea44571a05
                action: allow
      responses:
        '201':
          description: The updated file exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/file_exception'
              example:
                id: file_12345_UqhDVIdx8D5iwivAX
                object: file_exception
                version: 2
                account: WGC-1-123abc456
                created: 1579907960
                device: 12345
                description: Allow Sales Presentation.
                md5: d2ffd57b48ee2ac34a4797ea44571a05
                action: allow
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'
    delete:
      summary: Deletes the specified file exception.
      tags:
        - Exceptions (File)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the file exception to delete from your WatchGuard Cloud
            account.
          example: file_12345_UqhDVIdx8D5iwivAX
      responses:
        '201':
          description: The deleted file exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/file_exception_base'
                  - type: object
                    properties:
                      inactive:
                        type: boolean
                        description: Object is inactive.
                        example: true
                    required: [inactive]
                example:
                  id: file_12345_UqhDVIdx8D5iwivAX
                  object: file_exception
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  device: 12345
                  description: Allow Sales Presentation.
                  md5: d2ffd57b48ee2ac34a4797ea44571a05
                  action: allow
                  inactive: true
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions/file:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves file exceptions saved in the specified WatchGuard Cloud account.
      tags:
        - Exceptions (File)
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which file exceptions to retrieve
            from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND action:"allow"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first file exception to return in the response.
          example: file_12345_UqhDVIdx8D5iwivAX
      responses:
        '200':
          description: A list of file exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      $ref: '#/components/schemas/file_exception'
                  start_after:
                    type: string
                    example: file_12345_UqhDVIdx8D5iwivAX
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/geolocation:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      summary: Retrieves all Geolocation exceptions saved in the specified WatchGuard
        Cloud account.
      tags:
        - Exceptions (Geolocation)
      parameters:
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which Geolocation exceptions to
            retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND address.type:"ipv4_range"
      responses:
        '200':
          description: A list of geolocation exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/geolocation_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    post:
      summary: Creates a new Geolocation exception.
      tags:
        - Exceptions (Geolocation)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/new_object_attributes'
                - $ref: '#/components/schemas/geolocation_exception_base'
              example:
                device: 12345
                description: Allow example.com
                address:
                  type: fqdn
                  value: example.com
      responses:
        '201':
          description: The created geolocation exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geolocation_exception'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/geolocation/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified Geolocation exception.
      tags:
        - Exceptions (Geolocation)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the Geolocation exception to retrieve.
          example: geoe_12345_aHbWC5IuWO3qzyV2t
      responses:
        '200':
          description: The geolocation exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geolocation_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified Geolocation exception.
      tags:
        - Exceptions (Geolocation)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the Geolocation exception to update in your WatchGuard
            Cloud account.
          example: geoe_12345_aHbWC5IuWO3qzyV2t
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/object_update_attributes'
                - $ref: '#/components/schemas/geolocation_exception_base'
              example:
                version: 1
                description: Allow example.com
                address:
                  type: fqdn
                  value: example.com
      responses:
        '201':
          description: The updated geolocation exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geolocation_exception'
              example:
                id: geoe_12345_aHbWC5IuWO3qzyV2t
                object: geolocation_exception
                version: 2
                account: WGC-1-123abc456
                created: 1579907960
                device: 12345
                author: testuser
                description: Allow example.com
                address:
                  type: fqdn
                  value: example.com
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'
    delete:
      summary: Deletes the specified Geolocation exception.
      tags:
        - Exceptions (Geolocation)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the Geolocation exception to delete from your WatchGuard
            Cloud account.
          example: geoe_12345_aHbWC5IuWO3qzyV2t
      responses:
        '201':
          description: The deleted geolocation exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/geolocation_exception_base'
                  - type: object
                    properties:
                      inactive:
                        type: boolean
                        description: Object is inactive.
                        example: true
                    required: [inactive]
                example:
                  id: geoe_12345_aHbWC5IuWO3qzyV2t
                  object: geolocation_exception
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  device: 12345
                  author: testuser
                  description: Allow example.com
                  address:
                    type: fqdn
                    value: example.com
                  inactive: true
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions/geolocation:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves all Geolocation exceptions saved in the specified WatchGuard
        Cloud account.
      tags:
        - Exceptions (Geolocation)
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which Geolocation exceptions to
            retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND address.type:"ipv4_range"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first Geolocation exception to return in the response.
          example: geoe_12345_aHbWC5IuWO3qzyV2t
      responses:
        '200':
          description: A list of Geolocation exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      $ref: '#/components/schemas/geolocation_exception'
                  start_after:
                    type: string
                    example: geoe_12345_aHbWC5IuWO3qzyV2t
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/ips:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      summary: Retrieves all IPS signature exceptions.
      tags:
        - Exceptions (Intrusion Prevention)
      parameters:
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which IPS signature exceptions
            to retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND signature_id:"1054265"
      responses:
        '200':
          description: A list of IPS signature exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ips_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    post:
      summary: Creates a new IPS signature exception.
      tags:
        - Exceptions (Intrusion Prevention)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/new_object_attributes'
                - $ref: '#/components/schemas/ips_exception_base'
              example:
                device: 12345
                description: Drop signature 1055124
                signature_id: 1054265
                action: drop
      responses:
        '201':
          description: The created IPS signature exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ips_exception'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/ips/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified IPS signature exception.
      tags:
        - Exceptions (Intrusion Prevention)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the IPS signature exception to retrieve.
          example: ipse_12345_eY5Jwxv1nE3Xlk3zx
      responses:
        '200':
          description: The IPS signature exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ips_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/bad_request'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified IPS signature exception.
      tags:
        - Exceptions (Intrusion Prevention)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the IPS signature exception to update in your WatchGuard
            Cloud account.
          example: ipse_12345_eY5Jwxv1nE3Xlk3zx
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/object_update_attributes'
                - $ref: '#/components/schemas/ips_exception_base'
              example:
                version: 1
                description: Drop signature 1055124
                signature_id: 1054265
                action: drop
      responses:
        '201':
          description: The updated IPS signature exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ips_exception'
              example:
                id: ipse_12345_eY5Jwxv1nE3Xlk3zx
                object: ips_exception
                device: 12345
                version: 2
                account: WGC-1-123abc456
                created: 1579907960
                author: testuser
                description: Drop signature 1055124
                signature_id: 1054265
                action: drop
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'
    delete:
      summary: Deletes the specified IPS signature exception.
      tags:
        - Exceptions (Intrusion Prevention)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the IPS signature exception to delete from your WatchGuard
            Cloud account.
          example: ipse_12345_eY5Jwxv1nE3Xlk3zx
      responses:
        '201':
          description: The deleted IPS signature exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/ips_exception_base'
                  - type: object
                    properties:
                      inactive:
                        type: boolean
                        description: Object is inactive.
                        example: true
                    required: [inactive]
                example:
                  id: ipse_12345_eY5Jwxv1nE3Xlk3zx
                  object: ips_exception
                  device: 12345
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  author: testuser
                  description: Drop signature 1055124
                  signature_id: 1054265
                  action: drop
                  inactive: true
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions/ips:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves all IPS signature exceptions.
      tags:
        - Exceptions (Intrusion Prevention)
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which IPS signature exceptions
            to retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND signature_id:"1054265"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first IPS signature exception to return in the response.
          example: ipse_12345_eY5Jwxv1nE3Xlk3zx
      responses:
        '200':
          description: A list of IPS signature exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      $ref: '#/components/schemas/ips_exception'
                  start_after:
                    type: string
                    example: ipse_12345_eY5Jwxv1nE3Xlk3zx
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/webblocker:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      deprecated: true
      summary: Retrieves all WebBlocker exceptions.
      tags:
        - Exceptions (WebBlocker)
      parameters:
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which WebBlocker exceptions to
            retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND rule_type:"string"
      responses:
        '200':
          description: A list of WebBlocker exceptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/webblocker_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    post:
      summary: Creates a new WebBlocker exception.
      tags:
        - Exceptions (WebBlocker)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/new_object_attributes'
                - $ref: '#/components/schemas/webblocker_exception_base'
              example:
                device: 12345
                name: Allow www.example.com
                rule_type: string
                rule: www.example.com/*
                action: allow
      responses:
        '201':
          description: The created WebBlocker exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webblocker_exception'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/configuration/{accountid}/exceptions/webblocker/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified WebBlocker exception.
      tags:
        - Exceptions (WebBlocker)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the WebBlocker exception to retrieve.
          example: wbe_12124_7HM70EvrifZ7rSfXSA
      responses:
        '200':
          description: The WebBlocker exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webblocker_exception'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified WebBlocker exception.
      tags:
        - Exceptions (WebBlocker)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the WebBlocker exception to update in your WatchGuard
            Cloud account.
          example: wbe_12124_7HM70EvrifZ7rSfXSA
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/object_update_attributes'
                - $ref: '#/components/schemas/webblocker_exception_base'
              example:
                version: 1
                name: Allow www.example.com
                rule_type: string
                rule: www.example.com/*
                action: allow
      responses:
        '201':
          description: The updated WebBlocker exception object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webblocker_exception'
              example:
                id: wbe_12124_7HM70EvrifZ7rSfXSA
                object: webblocker_exception
                device: 12345
                version: 2
                account: WGC-1-123abc456
                created: 1579907960
                author: testuser
                name: Allow www.example.com
                rule_type: string
                rule: www.example.com/*
                action: allow
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '409':
          $ref: '#/components/responses/conflict'
        '500':
          $ref: '#/components/responses/internal_error'
    delete:
      summary: Deletes the specified WebBlocker exception.
      tags:
        - Exceptions (WebBlocker)
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the WebBlocker exception to delete from your WatchGuard
            Cloud account.
          example: wbe_12124_7HM70EvrifZ7rSfXSA
      responses:
        '201':
          description: The deleted WebBlocker exception object.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/object_metadata'
                  - $ref: '#/components/schemas/new_object_attributes'
                  - $ref: '#/components/schemas/webblocker_exception_base'
                  - type: object
                    properties:
                      inactive:
                        type: boolean
                        description: Object is inactive.
                        example: true
                    required: [inactive]
                example:
                  id: wbe_12124_7HM70EvrifZ7rSfXSA
                  object: webblocker_exception
                  device: 12345
                  version: 2
                  account: WGC-1-123abc456
                  created: 1579907960
                  author: testuser
                  name: Allow www.example.com
                  rule_type: string
                  rule: www.example.com/*
                  action: allow
                  inactive: true
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v2/configuration/{accountid}/exceptions/webblocker:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves all WebBlocker exceptions.
      tags:
        - Exceptions (WebBlocker)
      parameters:
        - $ref: '#/components/parameters/limit'
        - in: query
          name: query
          required: false
          schema:
            type: string
          description: Query string that specifies which WebBlocker exceptions to
            retrieve from WatchGuard Cloud, written in Lucene query syntax.
          example: device:12345 AND rule_type:"string"
        - in: query
          name: start_after
          required: false
          schema:
            type: string
          description: ID of the first WebBlocker exception to return in the response.
          example: wbe_12124_7HM70EvrifZ7rSfXSA
      responses:
        '200':
          description: A list of WebBlocker exceptions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  more:
                    type: boolean
                  objects:
                    type: array
                    items:
                      $ref: '#/components/schemas/webblocker_exception'
                  start_after:
                    type: string
                    example: wbe_12124_7HM70EvrifZ7rSfXSA
                required: [count, objects]
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/commands/{accountid}/global_exceptions/enable:
    parameters:
      - $ref: '#/components/parameters/accountid'
    post:
      summary: Enables the ability to manage and deploy exceptions with the Firebox
        Management API for the specified device(s).
      tags:
        - Global Exceptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                devices:
                  allOf:
                    - $ref: '#/components/schemas/device_list'
                  description: Device(s) to enable global exceptions for. Each device
                    has a unique ID number in WatchGuard Cloud, which appears in the
                    URL of the Device Summary page.
              required: [devices]
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/commands/{accountid}/global_exceptions/disable:
    parameters:
      - $ref: '#/components/parameters/accountid'
    post:
      summary: Disables the ability to manage and deploy global exceptions with the
        Firebox Management API for the specified device(s). You can specify whether
        to retain or delete exceptions on the device(s).
      tags:
        - Global Exceptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                devices:
                  allOf:
                    - $ref: '#/components/schemas/device_list'
                  description: Device(s) to disable global exceptions for. Each device
                    has a unique ID number in WatchGuard Cloud, which appears in the
                    URL of the Device Summary page.
                retain_device_configuration:
                  type: boolean
                  description: Specifies whether to retain or delete exceptions on
                    the specified device(s) when you disable global exceptions. Either
                    true (retain exceptions) or false (delete exceptions).
                  default: false
              required: [devices]
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/commands/{accountid}/deployments:
    parameters:
      - $ref: '#/components/parameters/accountid'
    post:
      summary: Deploys exceptions saved in WatchGuard Cloud to the specified devices.
      tags:
        - Deployments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                devices:
                  allOf:
                    - $ref: '#/components/schemas/device_list'
                  description: Device(s) to deploy exceptions to. Each device has
                    a unique ID number in WatchGuard Cloud, which appears in the URL
                    of the Device Summary page. Enclose in square brackets and separate
                    device IDs with commas.
                version:
                  type: integer
                  description: Version number of the device deployment to deploy.
                    Only specify a version if you want to redeploy a previous deployment
                    to the device.
                  example: 1
                start_date:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: Time to deploy objects to the specified devices. Specify
                    'now' to deploy immediately or specify a time in UTC format to
                    deploy at that time.
                  example: '2020-04-19T21:23:46Z'
                description:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: 'Description of the device deployment. Maximum: 128
                    characters.'
                  example: Deploy objects to Seattle office Fireboxes.
              required:
                - devices
                - start_date
            example:
              devices: [12345, 12346, 12347]
              start_date: '2020-04-19T21:23:46Z'
              description: Deploy objects to Seattle office Fireboxes.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  ok:
                    type: array
                    items:
                      $ref: '#/components/schemas/device_transaction'
                  errors:
                    type: object
                    example:
                      '12345': global_exceptions not enabled for device
                      FBCL-67890: global_exceptions not enabled for device
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/device_transaction'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/commands/{accountid}/transactions:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves a list of transaction records, which include details of individual
        deployments.
      tags:
        - Deployments
      parameters:
        - in: query
          name: device
          schema:
            type: integer
          description: Specifies the ID of the device to retrieve transaction records
            for.
          example: 12345
        - in: query
          name: tx_type
          schema:
            type: string
            enum:
              - deployment
          required: true
          description: Specifies the type of transaction records to retrieve.
          example: deployment
      responses:
        '200':
          description: The transaction objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/device_transaction'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

  /v1/commands/{accountid}/transactions/{objectid}:
    parameters:
      - $ref: '#/components/parameters/accountid'
    get:
      summary: Retrieves the specified transaction record, which includes details
        of a specific deployment.
      tags:
        - Deployments
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the transaction record to retrieve.
          example: ddply_12345_J2VwPbXuek3CRGN1
      responses:
        '200':
          description: The transaction object.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/device_transaction'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'
    put:
      summary: Updates the specified transaction record.
      tags:
        - Deployments
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the transaction record to update.
          example: ddply_12345_J2VwPbXuek3CRGN1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start_date:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: Time to deploy objects to the specified devices. Specify
                    'now' to deploy immediately or specify a time in UTC format to
                    deploy at that time.
                  example: '2020-04-19T21:23:46Z'
                description:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: 'Description of the device deployment. Maximum: 128
                    characters.'
                  example: Deploy objects to Seattle office Fireboxes.
              required:
                - start_date
              example:
                start_date: '2020-04-19T21:23:46Z'
                description: Deploy objects to Seattle office Fireboxes.
      responses:
        '200':
          description: The updated transaction object.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/device_transaction'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'

    delete:
      summary: Deletes the specified transaction record.
      tags:
        - Deployments
      parameters:
        - in: path
          name: objectid
          required: true
          schema:
            type: string
          description: ID of the transaction record to delete from your WatchGuard
            Cloud account.
          example: ddply_12345_J2VwPbXuek3CRGN1
      responses:
        '200':
          description: The deleted transaction object.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/device_transaction'
        '403':
          $ref: '#/components/responses/access_denied'
        '404':
          $ref: '#/components/responses/not_found'
        '405':
          $ref: '#/components/responses/method_denied'
        '500':
          $ref: '#/components/responses/internal_error'


components:
  parameters:
    accountid:
      in: path
      name: accountid
      required: true
      schema:
        type: string
      description: Your WatchGuard Cloud account ID.
      examples:
        WGC-1-123abc456:
          value: WGC-1-123abc456
        ACC-1234567:
          value: ACC-1234567
    limit:
      in: query
      name: limit
      required: false
      schema:
        type: integer
      description: Maximum number of exceptions to return in the the response.
      examples:
        10:
          value: 10
    start_after:
      in: query
      name: start_after
      required: false
      schema:
        type: string
      description: ID of the first exception to return in the response. The value
        must be a valid exception ID.
      examples:
        bse_12345_ARBHLJ70Y78rGOIGBS:
          value: bse_12345_ARBHLJ70Y78rGOIGBS

  responses:
    bad_request:
      description: BAD REQUEST
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/error_response'
              - example:
                  type: invalid_request_error
                  message: The request could not be validated.

    access_denied:
      description: ACCESS DENIED
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/error_response'
              - example:
                  type: access_denied_error
                  message: The user is not permitted to access the API endpoint.
    not_found:
      description: NOT FOUND
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/error_response'
              - example:
                  type: invalid_object_error
                  message: The object could not be found.
    method_denied:
      description: METHOD NOT ALLOWED
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/error_response'
              - example:
                  type: method_denied_error
                  message: The target endpoint does not support the request method.

    internal_error:
      description: INTERNAL ERROR
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/error_response'
              - example:
                  type: server_error
                  message: The request could not be processed due to an internal server
                    error.
    conflict:
      description: CONFLICT
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/error_response'
              - example:
                  type: object_exists_error
                  message: An object exists with the same ID and version.

  schemas:
    Health:
      type: object
      properties:
        healthy:
          type: boolean
          default: false

    device_list:
      type: array
      maxItems: 50
      items:
        oneOf:
          - type: string
          - type: integer
      example: [12345, 12346, 12347, FBCL-12345]

    error_response:
      type: object
      properties:
        type:
          type: string
          enum:
            - invalid_request_error
            - access_denied_error
            - invalid_object_error
            - method_denied_error
            - object_exists_error
            - server_error
          description: Type of error.
        message:
          type: string
          description: Error message text.
      required:
        - type
        - message

    ipv4_address_string:
      type: string
      pattern: 
        ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
      example: 192.0.2.1

    ipv4_addr_type:
      oneOf:
        - $ref: '#/components/schemas/ipv4_host_type'
        - $ref: '#/components/schemas/ipv4_range_type'
        - $ref: '#/components/schemas/ipv4_network_type'

    ipv4_cidr_string:
      type: string
      pattern: 
        ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/([1-9]|[1-2][0-9]|3[0-2])$
      example: 192.0.2.0/24

    ipv4_host_type:
      type: object
      description: IPv4 address
      properties:
        type:
          type: string
          enum:
            - ipv4_host
        value:
          $ref: '#/components/schemas/ipv4_address_string'
      required:
        - type
        - value

    ipv4_network_type:
      type: object
      description: IPv4 network
      properties:
        type:
          type: string
          enum:
            - ipv4_network
        value:
          $ref: '#/components/schemas/ipv4_cidr_string'
      required:
        - type
        - value

    ipv4_range_type:
      type: object
      description: IPv4 address range
      properties:
        type:
          type: string
          enum:
            - ipv4_range
        value:
          type: string
          pattern: 
            ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)-(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
          example: 192.0.2.1-192.0.2.5
      required:
        - type
        - value

    fqdn_type:
      type: object
      description: FQDN
      properties:
        type:
          type: string
          enum:
            - fqdn
        value:
          type: string
          pattern: ^(\*\.)?([a-zA-Z0-9_](([a-zA-Z0-9_-])*[a-zA-Z0-9_])?\.)+([a-zA-Z])+$
          example: example.com
      required:
        - type
        - value

    object_metadata:
      type: object
      properties:
        id:
          type: string
          description: Unique ID that identifies this object.
        object:
          type: string
          description: Type of object.
        version:
          type: integer
          description: Version number of the object.
          example: 1
        account:
          type: string
          description: Your WatchGuard Cloud account ID.
          example: WGC-1-123abc456
        created:
          type: integer
          description: Time that the object was created, specified in Unix epoch time
            format.
          example: 1579907960
        device:
          oneOf:
            - type: string
            - type: integer
          description: Device this object applies to.
          example: 12345, "FBCL-12345"
        author:
          type: string
          description: Author of the object.  This is always empty for objects added
            or updated with the Firebox Management API.
      required:
        - id
        - object
        - version
        - account
        - created
        - author

    new_object_attributes:
      type: object
      properties:
        device:
          oneOf:
            - type: string
            - type: integer
          description: Device this object applies to. Each device has a unique ID
            number in WatchGuard Cloud, which appears in the URL of the Device Summary
            page for the device.
          example: 12345, "FBCL-12345"

    object_update_attributes:
      type: object
      properties:
        version:
          type: integer
          description: Version number of the object to update.
          example: 1
      required:
        - version

    blocked_site_exception_base:
      type: object
      properties:
        description:
          type: string
          maxLength: 127
          description: 'Description of the blocked sites exception. Letters, numbers,
            spaces, commas, and (-_+.*:@/;) only. Maximum: 127 characters.'
          example: Block example.com
        address:
          oneOf:
            - $ref: '#/components/schemas/ipv4_addr_type'
            - $ref: '#/components/schemas/fqdn_type'
          description: Address of the site to allow or block.
        action:
          type: string
          enum:
            - allow
            - block
          default: allow
          description: Action to take for the specified address, either allow or block.
            Allow adds the address to the Blocked Sites Exception list. Block adds
            the address to the Blocked Sites list.
          example: block
      required:
        - address

    blocked_site_exception:
      description: Blocked sites exception.
      allOf:
        - $ref: '#/components/schemas/object_metadata'
        - $ref: '#/components/schemas/new_object_attributes'
        - $ref: '#/components/schemas/blocked_site_exception_base'
      example:
        id: bse_12345_ARBHLJ70Y78rGOIGBS
        object: blockedsite_exception
        version: 1
        account: WGC-1-123abc456
        created: 1579907960
        device: 12345
        author: testuser
        description: Block example.com
        address:
          type: fqdn
          value: example.com
        action: block

    botnet_exception_base:
      type: object
      properties:
        description:
          type: string
          maxLength: 127
          description: 'Description of the botnet site exception. Letters, numbers,
            spaces, commas, and (-_+.*:@/;) only. Maximum: 127 characters.'
          example: Allow example.com
        address:
          oneOf:
            - $ref: '#/components/schemas/ipv4_addr_type'
            - $ref: '#/components/schemas/fqdn_type'
          description: Address of the exception.
      required:
        - address

    botnet_exception:
      description: Botnet site exception.
      allOf:
        - $ref: '#/components/schemas/object_metadata'
        - $ref: '#/components/schemas/new_object_attributes'
        - $ref: '#/components/schemas/botnet_exception_base'
        - example:
            id: bote_CjBY92ourN7Izaa1jJu3eH5
            object: botnet_exception
            version: 1
            account: WGC-1-123abc456
            created: 1579907960
            device: 12345
            author: testuser
            description: Allow example.com
            address:
              type: fqdn
              value: example.com

    file_exception_base:
      type: object
      properties:
        action:
          type: string
          enum:
            - allow
            - drop
          description: Action to take for the specified file, either allow or drop.
        description:
          type: string
          maxLength: 127
          description: 'Description of the file exception. Maximum: 127 characters.'
          example: Allow Sales Presentation.
        md5:
          type: string
          pattern: ^[a-f0-9]{32}$
          description: MD5 hash of the file. Must be 32 characters (lowercase letters
            a-f and numbers only).
          example: d2ffd57b48ee2ac34a4797ea44571a05
      required:
        - action
        - md5

    file_exception:
      description: File exception.
      allOf:
        - $ref: '#/components/schemas/object_metadata'
        - $ref: '#/components/schemas/new_object_attributes'
        - $ref: '#/components/schemas/file_exception_base'
        - example:
            id: file_12345_UqhDVIdx8D5iwivAX
            object: file_exception
            version: 1
            account: WGC-1-123abc456
            created: 1579907960
            device: 12345
            author: testuser
            description: Allow Sales Presentation.
            md5: d2ffd57b48ee2ac34a4797ea44571a05
            action: allow

    geolocation_exception_base:
      type: object
      properties:
        description:
          type: string
          maxLength: 127
          description: 'Description of the Geolocation exception. Letters, numbers,
            spaces, commas, and (-_+.*:@/;) only. Maximum: 127 characters.'
          example: Allow example.com
        address:
          oneOf:
            - $ref: '#/components/schemas/ipv4_addr_type'
            - $ref: '#/components/schemas/fqdn_type'
          description: Address of the exception.
      required:
        - address

    geolocation_exception:
      description: Geolocation exception.
      allOf:
        - $ref: '#/components/schemas/object_metadata'
        - $ref: '#/components/schemas/new_object_attributes'
        - $ref: '#/components/schemas/geolocation_exception_base'
        - example:
            id: geoe_12345_aHbWC5IuWO3qzyV2t
            object: geolocation_exception
            version: 1
            account: WGC-1-123abc456
            created: 1579907960
            device: 12345
            author: testuser
            description: Allow example.com
            address:
              type: fqdn
              value: example.com

    ips_exception_base:
      type: object
      properties:
        action:
          type: string
          enum:
            - allow
            - block
            - drop
          description: Action to take for the specified signature, either allow, block,
            or drop.
        alarm:
          type: boolean
          default: false
          description: Specifies whether the Firebox sends an alarm for the IPS exception.
          example: true
        description:
          type: string
          maxLength: 127
          description: 'Description of the IPS signature exception. Maximum: 127 characters.'
          example: Drop signature 1055124
        signature_id:
          type: string
          pattern: ^[0-9]{1,31}$
          description: 'IPS signature ID. Must contain only numbers. Maximum: 31 characters.'
          example: 1055124
      required:
        - action
        - signature_id

    ips_exception:
      description: IPS signature exception.
      allOf:
        - $ref: '#/components/schemas/object_metadata'
        - $ref: '#/components/schemas/new_object_attributes'
        - $ref: '#/components/schemas/ips_exception_base'
        - example:
            id: ipse_12345_eY5Jwxv1nE3Xlk3zx
            object: ips_exception
            device: 12345
            version: 1
            account: WGC-1-123abc456
            created: 1579907960
            author: testuser
            description: Drop signature 1055124
            signature_id: 1054265
            action: drop

    webblocker_exception_base:
      type: object
      properties:
        action:
          type: string
          enum:
            - allow
            - deny
          description: Action to take for the WebBlocker exception, either allow or
            deny.
        alarm:
          type: boolean
          default: false
          description: Specifies whether the Firebox sends an alarm for the WebBlocker
            exception.
          example: true
        name:
          type: string
          pattern: ^([A-Za-z0-9\-\ \_\+\.\*\)\(]|[^\x00-\x7f])+$
          maxLength: 58
          description: 'Name of the WebBlocker exception. Maximum: 58 characters.'
          example: Allow example.com
        rule_type:
          type: string
          enum:
            - string
            - pattern
            - regexp
          description: The type of rule, either string (exact match), pattern (pattern
            match), or regexp (regular expression).
        rule:
          type: string
          pattern: ^(?=.*\S).+$
          maxLength: 255
          description: 'The URL pattern, value, or expression to match. Maximum: 255
            characters.'
          example: www.example.com/*, 1.1.1.1, or (www\.)?example\.[com|net]
      required:
        - action
        - name
        - rule_type
        - rule

    webblocker_exception:
      description: WebBlocker exception.
      allOf:
        - $ref: '#/components/schemas/object_metadata'
        - $ref: '#/components/schemas/new_object_attributes'
        - $ref: '#/components/schemas/webblocker_exception_base'
        - example:
            id: wbe_12124_7HM70EvrifZ7rSfXSA
            object: webblocker_exception
            device: 12345
            version: 1
            account: WGC-1-123abc456
            created: 1579907960
            author: testuser
            name: Allow www.example.com
            rule_type: string
            rule: www.example.com/*
            action: allow

    device_transaction:
      type: object
      properties:
        id:
          type: string
          description: Unique ID that identifies this device transaction.
          example: ddply_12345_J2VwPbXuek3CRGN1
        object:
          type: string
          description: Device object type.
          example: device_deployment
        device:
          type: string
          description: Device this transaction applies to. Each device has a unique
            ID number in WatchGuard Cloud, which appears in the URL of the Device
            Summary page.
          example: '12345'
        inception_time:
          type: integer
          description: Time that the transaction was created, in seconds since epoch.
          example: 1714684162
        start_date:
          type: string
          description: Time to deploy the transaction to the device, in UTC format.
          example: '2020-02-21T19:48:19Z'
        status:
          type: string
          enum:
            - scheduled
            - imaged
            - pending
            - in_progress
            - complete
            - failed
          description: Status of the transaction.
        account:
          type: string
          description: Your WatchGuard Cloud account ID.
          example: WGC-1-123abc456
        original_author_username:
          type: string
          description: Operator that added the transaction. This is always empty for
            transactions added with the Firebox Management API.
      required: [id, object, device, inception_time, start_date, status, account,
        operator]
      example:
        account: WGC-1-123abc456
        original_author_username:
        device: '12345'
        id: ddply_12345_J2VwPbXuek3CRGN1
        status: complete
        start_date: '2020-03-04T18:54:48Z'
        object: device_deployment
        inception_time: 1714684162

  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: WatchGuard-API-Key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
tags:
  - name: Exceptions
    description: All exception types
  - name: Exceptions (Blocked Sites)
    description: The Blocked Sites list specifies sites that cannot make a connection
      through the Firebox. The Firebox does not block traffic from sites you add to
      the Blocked Sites Exception list.
  - name: Exceptions (Botnet)
    description: Botnet site exceptions specify sites that you do not want to block,
      even if they are known botnet sites that the Botnet Detection service added
      to the Blocked SItes list.
  - name: Exceptions (File)
    description: File exceptions identify files that you do not want the Firebox to
      scan with APT Blocker, Data Loss Prevention, Gateway AntiVirus, and IntelligentAV.
  - name: Exceptions (Geolocation)
    description: Geolocation exceptions identify sites that you do not want the Geolocation
      service to block.
  - name: Exceptions (Intrusion Prevention)
    description: IPS signature exceptions specify IPS signature IDs that you do not
      want the Firebox to use to block connections.
  - name: Exceptions (WebBlocker)
    description: WebBlocker exceptions specify that WebBlocker must always allow or
      always deny access to a website, regardless of the WebBlocker content category.
  - name: Global Exceptions
    description: Before you can deploy the exceptions you configure with the Firebox
      Management API to a device, you must enable global exceptions on the device.
  - name: Deployments
    description: After you configure exceptions with the Firebox Management API, you
      can deploy the exceptions to devices immediately or at a specified time.
servers:
  - url: https://api.usa.cloud.watchguard.com/rest/firebox/management
    description: Prod USA Region
  - url: https://api.deu.cloud.watchguard.com/rest/firebox/management
    description: Prod DEU region
  - url: https://api.jpn.cloud.watchguard.com/rest/firebox/management
    description: Prod JPN region
security:
  - ApiKeyAuth: []
    BearerAuth: []
externalDocs:
  description: Additional documentation
  url: https://www.watchguard.com/help/docs/api/Content/en-US/home.html
