openapi: 3.0.1
info:
  title: Activations API
  description: REST API for hardware and software activations.
  version: 1.0.1
  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/activate:
    post:
      tags:
        - Activations
      summary: Activates one or more hardware devices or software licenses.
      requestBody:
        description: >
          Request body that includes the information required to activate one or
          more of these WatchGuard devices or licenses: 
            - Hardware device
            - Premium 4-hour replacement for a hardware device
            - Hardware device with a license key (such as a WatchGuard access point)
            - Virtual device (FireboxV or Firebox Cloud)
            - Hardware device license key renewal
            - Hardware device trade-in
            - Hardware device trade-up
            - New software license
            - Co-term new software license with an existing license:
              - Add users to an existing software license
              - Extend an existing software license
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ActivationsRequest'
            examples:
              Device:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
              Device with Location for 4-Hour Replacement:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        parentSerialNumber: SN7654321-4321
                        deviceLocation:
                          address1: 1234 North Street
                          address2: Suite 100
                          city: Seattle
                          stateOrProvince: WA
                          country: United States
                          zipCode: 98104
              Device with License Key:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        initialServiceLicenseKey: 783555ee-9f75-4997-83e2-4a81edc49140
                        friendlyName: Access Point - Seattle Office
              Virtual Device (FireboxV or Firebox Cloud):
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: Firebox Cloud
                        instanceId: I-123456789
              Device License Renewal:
                value:
                  activations:
                    - activationKey: 783555ee-9f75-4997-83e2-4a81edc49140
                      deviceDetails:
                        parentSerialNumber: SN1234567-1234
              Device Trade-In:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeIn:
                          serialNumber: XYZ123234
                          competitorName: Competitor Inc
                          competitorModel: Competitor Firewall
              Device Trade-Up:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeUp:
                          serialNumber: SN7654321-4321
              New Software License:
                value:
                  activations:
                    - activationKey: ae6ebb64-0a75-441b-ab18-f454d2b7fd4d
                      saasDetails:
                        licenseName: New AuthPoint License
              Co-term - Extend Existing License:
                value:
                  activations:
                    - activationKey: caf2c985-dbe9-4b00-be89-0940d106eb9c
                      saasDetails:
                        parentLicenseKey: f1684f22-ad76-4d1c-a32e-c7f04694cead
                        extendOrAddUsers: Extend
              Co-term - Add Users to Existing License:
                value:
                  activations:
                    - activationKey: 7108f988-c0db-4201-a8fa-525a0f4a49b9
                      saasDetails:
                        parentLicenseKey: 5f0dbb57-4793-4ed6-8c47-3185c93daf88
                        extendOrAddUsers: AddUsers
          application/json:
            schema:
              $ref: '#/components/schemas/ActivationsRequest'
            examples:
              Device:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
              Device with Location for 4-Hour Replacement:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        deviceLocation:
                          address1: 1234 North Street
                          address2: Suite 100
                          city: Seattle
                          stateOrProvince: WA
                          country: United States
                          zipCode: 98004
              Device with License Key:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        initialServiceLicenseKey: 783555ee-9f75-4997-83e2-4a81edc49140
                        friendlyName: Access Point - Seattle Office
              Virtual Device (FireboxV or Firebox Cloud):
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: Firebox Cloud
                        instanceId: I-123456789
              Device License Renewal:
                value:
                  activations:
                    - activationKey: 783555ee-9f75-4997-83e2-4a81edc49140
                      deviceDetails:
                        parentSerialNumber: SN1234567-1234
              Device Trade-In:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeIn:
                          serialNumber: XYZ123234
                          competitorName: Competitor Inc
                          competitorModel: Competitor Firewall
              Device Trade-Up:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeUp:
                          serialNumber: SN7654321-4321
              New Software License:
                value:
                  activations:
                    - activationKey: ae6ebb64-0a75-441b-ab18-f454d2b7fd4d
                      saasDetails:
                        licenseName: New AuthPoint License
              Co-term - Extend Existing License:
                value:
                  activations:
                    - activationKey: caf2c985-dbe9-4b00-be89-0940d106eb9c
                      saasDetails:
                        parentLicenseKey: f1684f22-ad76-4d1c-a32e-c7f04694cead
                        extendOrAddUsers: Extend
              Co-term - Add Users to Existing License:
                value:
                  activations:
                    - activationKey: 7108f988-c0db-4201-a8fa-525a0f4a49b9
                      saasDetails:
                        parentLicenseKey: 5f0dbb57-4793-4ed6-8c47-3185c93daf88
                        extendOrAddUsers: AddUsers
          text/json:
            schema:
              $ref: '#/components/schemas/ActivationsRequest'
            examples:
              Device:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
              Device with Location for 4-Hour Replacement:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        deviceLocation:
                          address1: 1234 North Street
                          address2: Suite 100
                          city: Seattle
                          stateOrProvince: WA
                          country: United States
                          zipCode: 98004
              Device with License Key:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        initialServiceLicenseKey: 783555ee-9f75-4997-83e2-4a81edc49140
                        friendlyName: Access Point - Seattle Office
              Virtual Device (FireboxV or Firebox Cloud):
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: Firebox Cloud
                        instanceId: I-123456789
              Device License Renewal:
                value:
                  activations:
                    - activationKey: 783555ee-9f75-4997-83e2-4a81edc49140
                      deviceDetails:
                        parentSerialNumber: SN1234567-1234
              Device Trade-In:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeIn:
                          serialNumber: XYZ123234
                          competitorName: Competitor Inc
                          competitorModel: Competitor Firewall
              Device Trade-Up:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeUp:
                          serialNumber: SN7654321-4321
              New Software License:
                value:
                  activations:
                    - activationKey: ae6ebb64-0a75-441b-ab18-f454d2b7fd4d
                      saasDetails:
                        licenseName: New AuthPoint License
              Co-term - Extend Existing License:
                value:
                  activations:
                    - activationKey: caf2c985-dbe9-4b00-be89-0940d106eb9c
                      saasDetails:
                        parentLicenseKey: f1684f22-ad76-4d1c-a32e-c7f04694cead
                        extendOrAddUsers: Extend
              Co-term - Add Users to Existing License:
                value:
                  activations:
                    - activationKey: 7108f988-c0db-4201-a8fa-525a0f4a49b9
                      saasDetails:
                        parentLicenseKey: 5f0dbb57-4793-4ed6-8c47-3185c93daf88
                        extendOrAddUsers: AddUsers
          application/*+json:
            schema:
              $ref: '#/components/schemas/ActivationsRequest'
            examples:
              Device:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
              Device with Location for 4-Hour Replacement:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        deviceLocation:
                          address1: 1234 North Street
                          address2: Suite 100
                          city: Seattle
                          stateOrProvince: WA
                          country: United States
                          zipCode: 98004
              Device with License Key:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        initialServiceLicenseKey: 783555ee-9f75-4997-83e2-4a81edc49140
                        friendlyName: Access Point - Seattle Office
              Virtual Device (FireboxV or Firebox Cloud):
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: Firebox Cloud
                        instanceId: I-123456789
              Device License Renewal:
                value:
                  activations:
                    - activationKey: 783555ee-9f75-4997-83e2-4a81edc49140
                      deviceDetails:
                        parentSerialNumber: SN1234567-1234
              Device Trade-In:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeIn:
                          serialNumber: XYZ123234
                          competitorName: Competitor Inc
                          competitorModel: Competitor Firewall
              Device Trade-Up:
                value:
                  activations:
                    - activationKey: SN1234567-1234
                      deviceDetails:
                        friendlyName: T80 Firebox - Seattle Office
                        tradeUp:
                          serialNumber: SN7654321-4321
              New Software License:
                value:
                  activations:
                    - activationKey: ae6ebb64-0a75-441b-ab18-f454d2b7fd4d
                      saasDetails:
                        licenseName: New AuthPoint License
              Co-term - Extend Existing License:
                value:
                  activations:
                    - activationKey: caf2c985-dbe9-4b00-be89-0940d106eb9c
                      saasDetails:
                        parentLicenseKey: f1684f22-ad76-4d1c-a32e-c7f04694cead
                        extendOrAddUsers: Extend
              Co-term - Add Users to Existing License:
                value:
                  activations:
                    - activationKey: 7108f988-c0db-4201-a8fa-525a0f4a49b9
                      saasDetails:
                        parentLicenseKey: 5f0dbb57-4793-4ed6-8c47-3185c93daf88
                        extendOrAddUsers: AddUsers
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '500':
          description: Server Error
  /v1/recentactivations:
    get:
      tags:
        - Activations
      summary: Returns activations from the last 30 days for the account.
      parameters:
        - name: offset
          in: query
          description: "Number of records to skip before the API returns results.\r
            \nDefault: 0"
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          description: "Number of records to return in the response.\r\nDefault: 100"
          schema:
            type: integer
            format: int32
        - name: sortBy
          in: query
          description: Specifies how to sort the results in the response.
          schema:
            $ref: '#/components/schemas/SortingKeys'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecentActivationsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
  /v1/activationbatchstatuses/{batchId}:
    get:
      tags:
        - Activations
      summary: Returns activation statuses for the specified batch ID.
      parameters:
        - name: batchId
          in: path
          description: Batch ID to return activation statuses for.
          required: true
          schema:
            type: string
        - name: offset
          in: query
          description: "Number of records to skip before the API returns results.\r
            \nDefault: 0"
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          description: "Number of records to return in the response.\r\nDefault: 100"
          schema:
            type: integer
            format: int32
        - name: sortBy
          in: query
          description: Specifies how to sort the results in the response.
          schema:
            $ref: '#/components/schemas/SortingKeys'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationBatchStatusesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '500':
          description: Server Error
components:
  schemas:
    Health:
      type: object
      properties:
        healthy:
          type: boolean
          default: false
    Activation:
      type: object
      properties:
        activationKey:
          type: string
          description: Serial number or license key to activate.
          nullable: true
        deviceDetails:
          $ref: '#/components/schemas/DeviceDetails'
        saasDetails:
          $ref: '#/components/schemas/SaasDetails'
      additionalProperties: false
    ActivationBatchItemResponse:
      type: object
      properties:
        lineItemId:
          type: string
          description: ID that identifies a specific line item in an activation batch.
          format: uuid
        tags:
          type: object
          additionalProperties:
            type: string
            nullable: true
          description: Activation details for the line item.
          nullable: true
        status:
          $ref: '#/components/schemas/LineItemStatus'
      additionalProperties: false
    ActivationBatchStatusesResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BatchActivationStatus'
          description: List of items in the activation batch.
          nullable: true
        pagination:
          $ref: '#/components/schemas/Pagination'
      additionalProperties: false
    ActivationIntakeApiResponse:
      type: object
      properties:
        batchId:
          type: string
          description: Generated activation batch ID used to track activation statuses.
          format: uuid
        batchItems:
          type: array
          items:
            $ref: '#/components/schemas/ActivationBatchItemResponse'
          description: List of API responses for each item in the activation batch.
          nullable: true
        status:
          $ref: '#/components/schemas/BatchStatus'
        statusUrl:
          type: string
          description: URL that you can use to check the activation batch status.
          nullable: true
      additionalProperties: false
    ActivationsRequest:
      type: object
      properties:
        activations:
          type: array
          items:
            $ref: '#/components/schemas/Activation'
          description: List of activation requests.
          nullable: true
      additionalProperties: false
    ActivationsResponse:
      type: object
      properties:
        activations:
          type: array
          items:
            $ref: '#/components/schemas/ActivationIntakeApiResponse'
          description: List of API responses for the activations in the activation
            batch.
          nullable: true
      additionalProperties: false
    Batch:
      type: object
      properties:
        activationStatus:
          type: string
          description: "Current activation status.\r\nThis can be one of these values:
            Created, Processing, Complete, CompleteWithErrors"
          nullable: true
        batchId:
          type: string
          description: Batch ID.
          nullable: true
        created:
          type: string
          description: Date when the batch was created.
          format: date-time
        lastModified:
          type: string
          description: Date when the batch was last modified.
          format: date-time
        lineItemCount:
          type: integer
          description: Number of items in the activation batch.
          format: int32
        firstLineItem:
          $ref: '#/components/schemas/FirstLineItem'
      additionalProperties: false
    BatchActivationStatus:
      type: object
      properties:
        lineItemId:
          type: string
          description: ID that identifies a specific line item in an activation batch.
          format: uuid
        activationKey:
          type: string
          description: Serial number or license key to activate.
          nullable: true
        status:
          type: string
          description: Item activation status.
          nullable: true
        created:
          type: string
          description: Date when the line item was created.
          format: date-time
        lastModified:
          type: string
          description: Date when the line item was last modified.
          format: date-time
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
          description: List of activation errors returned by the API.
          nullable: true
      additionalProperties: false
    BatchStatus:
      enum:
        - Created
        - Processing
        - Complete
        - CompleteWithErrors
      type: string
    DeviceDetails:
      type: object
      properties:
        initialServiceLicenseKey:
          type: string
          description: License key to activate with the device, such as a Wi-Fi access
            point license.
          nullable: true
        friendlyName:
          type: string
          description: Friendly name used to identify the device.
          nullable: true
        instanceId:
          type: string
          description: Instance ID (also known as a VM ID) for your Firebox Cloud
            instance.
          nullable: true
        parentSerialNumber:
          type: string
          description: Device serial number.
          nullable: true
        tradeIn:
          $ref: '#/components/schemas/TradeIn'
        tradeUp:
          $ref: '#/components/schemas/TradeUp'
        deviceLocation:
          $ref: '#/components/schemas/DeviceLocation'
      additionalProperties: false
    DeviceLocation:
      type: object
      properties:
        address1:
          type: string
          description: First address line of the device location.
          nullable: true
        address2:
          type: string
          description: Second address line of the device location.
          nullable: true
        city:
          type: string
          description: City.
          nullable: true
        stateOrProvince:
          type: string
          description: State or province.
          nullable: true
        country:
          type: string
          description: Country.
          nullable: true
        zipCode:
          type: string
          description: Zip or postal code.
          nullable: true
      additionalProperties: false
    Error:
      type: object
      properties:
        errorType:
          type: string
          description: Description of the activation error returned by the API.
          nullable: true
      additionalProperties: false
    FirstLineItem:
      type: object
      properties:
        lineItemId:
          type: string
          description: ID that identifies a specific line item in an activation batch.
          nullable: true
        status:
          type: string
          description: Item activation status.
          nullable: true
        created:
          type: string
          description: Date when the line item was created.
          format: date-time
        lastModified:
          type: string
          description: Date when the line item was last modified.
          format: date-time
        activationKey:
          type: string
          description: Serial number or license key to activate.
          nullable: true
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
          description: List of activation errors returned by the API.
          nullable: true
      additionalProperties: false
    LineItemStatus:
      enum:
        - Created
        - Queued
        - Pending
        - Success
        - Failed
      type: string
    Pagination:
      type: object
      properties:
        offset:
          type: integer
          description: "Number of objects to skip before the API returns results.\r
            \nDefault: 0"
          format: int32
        limit:
          type: integer
          description: "Number of objects to return in the response.\r\nDefault: 100"
          format: int32
        totalResults:
          type: integer
          description: Total number of results returned by API.
          format: int32
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          description: Problem type.
          nullable: true
        title:
          type: string
          description: Summary of the problem type.
          nullable: true
        status:
          type: integer
          description: HTTP status code generated by the server for this occurrence
            of the problem.
          format: int32
          nullable: true
        detail:
          type: string
          description: Description of the problem.
          nullable: true
        instance:
          type: string
          description: URI reference that identifies the specific occurrence of the
            problem.
          nullable: true
      additionalProperties:
        oneOf:
          - type: string
          - type: object
          - type: array
    RecentActivationsResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Batch'
          description: List of items in the activation batch.
          nullable: true
        pagination:
          $ref: '#/components/schemas/Pagination'
      additionalProperties: false
    SaasDetails:
      type: object
      properties:
        licenseName:
          type: string
          description: Friendly name used to identify the license.
          nullable: true
        parentLicenseKey:
          type: string
          description: License key of the existing software license to extend or add
            users to.
          nullable: true
        extendOrAddUsers:
          type: string
          description: >-
            Specifies how to co-term a new software license with an existing
            license. This can be one of these values:
              - Extend - Extends the existing software license. Your user count is
            updated to match the number of users on the new license.
              - AddUsers - Adds users to the existing software license. Your user
            count is updated to the sum of the users on your current license and your
            new license.
          nullable: true
      additionalProperties: false
    SortingKeys:
      enum:
        - LastModified
      type: string
    TradeIn:
      type: object
      properties:
        serialNumber:
          type: string
          description: Serial number of the competitor device to trade in.
          nullable: true
        competitorName:
          type: string
          description: Name of the competitor.
          nullable: true
        competitorModel:
          type: string
          description: Competitor device model.
          nullable: true
      additionalProperties: false
    TradeUp:
      type: object
      properties:
        serialNumber:
          type: string
          description: Serial number of the existing device you want to trade up.
          nullable: true
      additionalProperties: false
    ValidationProblemDetails:
      type: object
      properties:
        type:
          type: string
          description: Problem type.
          nullable: true
        title:
          type: string
          description: Summary of the problem type.
          nullable: true
        status:
          type: integer
          description: HTTP status code generated by the server for this occurrence
            of the problem.
          format: int32
          nullable: true
        detail:
          type: string
          description: Description of the problem.
          nullable: true
        instance:
          type: string
          description: URI reference that identifies the specific occurrence of the
            problem.
          nullable: true
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          nullable: true
          readOnly: true
      additionalProperties:
        oneOf:
          - type: string
          - type: object
          - type: array
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: WatchGuard-API-Key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
servers:
  - url: https://api.usa.cloud.watchguard.com/rest/platform/activation
    description: Prod USA Region
  - url: https://api.deu.cloud.watchguard.com/rest/platform/activation
    description: Prod DEU region
  - url: https://api.jpn.cloud.watchguard.com/rest/platform/activation
    description: Prod JPN region
security:
  - ApiKeyAuth: []
    BearerAuth: []
externalDocs:
  description: Additional documentation
  url: https://www.watchguard.com/help/docs/api/Content/en-US/home.html
