





swagger: '2.0' 
info:
  description: Network Edge (NE) is a platform that allows customers to deploy and run virtual network services and appliances such as routers, load balancers, and firewalls on a generic device instead of additional dedicated hardware, CapEx and colo space. The Network Edge REST APIs allow you to interact with the Equinix Platform to programmatically create a virtual device and add services. Details on specific use cases can be found in the documentation available on the developer portal.
  version: '1.0'
  title: Network Edge APIs
  termsOfService: 'https://www.equinix.com/about/legal/terms'
  contact:
   name: Equinix API Support
   url: https://docs.equinix.com/api-support.htm
host: api.equinix.com
schemes:
- https
paths:
  /ne/v1/deviceTypes:
    get:
      tags:
      - Setup
      summary: Get Device Types 
      description: Returns device types (e.g., routers and firewalls) that can be launched on the NE platform.
      operationId: getVirtualDevicesUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: deviceTypeCode
        in: query
        description: Device type code (e.g., C8000V)
        type: string
        required: false
      - name: category
        in: query
        description: Category. One of FIREWALL, ROUTER or SD-WAN
        required: false
        type: string
      - name: offset
        in: query
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string 
        default: 20
        format: int32

      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/PageResponseDto-VirtualDeviceType'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

  /ne/v1/deviceTypes/{deviceType}/interfaces:
    get:
      tags:
      - Setup
      summary: Get Allowed Interfaces
      description: Returns the interface details for a device type with a chosen configuration. You must pass the device type as the path parameter. 
      operationId: getAllowedInterfacesUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: deviceType
        in: path
        description: Device type code. PA-VM.
        required: true
        type: string
      - name: deviceManagementType
        in: query
        description: Device management type. SELF-CONFIGURED
        required: true
        type: string
      - name: mode
        in: query
        required: false
        description: License mode, either Subscription or BYOL. 
        type: string
      - name: cluster
        in: query
        description: Whether you want a cluster device.
        required: false
        type: boolean
      - name: sdwan
        in: query
        description: Whether you want an SD-WAN device.
        required: false
        type: boolean
      - name: connectivity
        in: query
        description: Type of connectivity you want. INTERNET-ACCESS, PRIVATE, or INTERNET-ACCESS-WITH-PRVT-MGMT. PRIVATE devices do not have ACLs or bandwidth.
        required: false
        type: string
      - name: core
        in: query
        description: The desired number of cores.
        required: true
        type: integer
      - name: memory
        in: query
        description: Desired memory.
        required: false
        type: integer
      - name: unit
        in: query
        description: Unit of memory. GB or MB.
        required: false
        type: string
      - name: flavor
        in: query
        description: Flavor of device.
        required: false
        type: string
      - name: version
        in: query
        description: Version.
        required: false
        type: string
      - name: softwarePkg
        in: query
        description: Software package.
        required: false
        type: string
        
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/AllowedInterfaceResponse'
        '404':
          description: Resource Not found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
            
  /ne/v1/metros:
    get:
      tags:
      - Setup
      summary: Get Available Metros
      description: Gets the available list of metros where NE platform is available. Please note that an account must be created for each country where virtual devices are being purchased.
      operationId: getMetrosUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: region
        in: query
        description: Name of the region for which you want metros (e.g., AMER)
        required: false
        type: string
      - name: offset
        in: query
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string 
        default: 20
        format: int32

      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/PageResponseDto-MetroResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/accounts/{metro}:
    get:
      tags:
      - Setup
      summary: Get Accounts {metro}
      description: Gets accounts by metro. You must have an account in a metro to create a virtual device there. To create an account go to "accountCreateUrl".
      operationId: getAccountsWithStatusUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: metro
        in: path
        description: Metro region for which you want to check your account status
        required: true
        type: string
      - name: accountUcmId
        in: query
        description: Unique ID of an account
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Successfully retrieved the account details
          schema:
            $ref: '#/definitions/PageResponseDto-MetroAccountResponse'
        '401':
          description: You are not authorized to view the resource
        '403':
          description: Accessing the resource you were trying to reach is forbidden
        '404':
          description: Resource not found
        '500':
          description: 500 message
  /ne/v1/agreements/accounts:
    get:
      tags:
        - Setup
      summary: Get Agreement Status.
      description: Call this API to find out the status of your agreement, whether it is valid or not, or to just read the agreement terms.
      operationId: getAgreementStatusUsingGET
      consumes:
        - application/json
      produces:
        - '*/*'
      parameters:
        - name: account_number
          in: query
          description: account_number
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Successfully retrieved Status
          schema:
            $ref: '#/definitions/AgreementStatusResponse'
        '404':
          description: Resource not found
        '500':
          description: 500 message
    post:
      tags:
        - Setup
      summary: Create an agreement
      description: Call this API to post an agreement. The authorization token and content-type are the only headers that are passed to this API and a response is received based on the values passed.
      operationId: sendAgreementUsingPOST_1
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: agreementAcceptRequest
          description: agreementAcceptRequest
          required: true
          schema:
            $ref: '#/definitions/AgreementAcceptRequest'
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: 'The request is fulfilled.'
          schema:
            $ref: '#/definitions/AgreementAcceptResponse'
        '404':
          description: Resource not found

  /ne/v1/agreements/vendors:
    get:
      tags:
        - Setup
      summary: Get Vendor Terms
      description: Returns a link to a vendor's terms. The term "vendor" refers to the vendor of a virtual device on the Network Edge platform.
      operationId: getVendorTermsUsingGET
      consumes:
        - application/json
      produces:
        - '*/*'
      parameters:
        - name: vendorPackage
          in: query
          description: vendorPackage
          required: true
          type: string
        - name: licenseType
          in: query
          description: licenseType
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Successfully retrieved the vendor's terms
          schema:
            $ref: '#/definitions/VendorTermsResponse'
        '404':
          description: Resource not found
        '500':
          description: 500 message
  /ne/v1/agreements/orders:
    get:
      tags:
        - Setup
      summary: Get Order Terms
      description: Retrieves the terms and conditions of orders. Please read the terms and conditions before placing an order.
      operationId: getOrderTermsUsingGET
      consumes:
        - application/json
      produces:
        - '*/*'
      parameters:
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Successfully retrieved Status
          schema:
            $ref: '#/definitions/OrderTermsResponse'
        '404':
          description: Resource not found
        '500':
          description: 500 message
  /ne/v1/prices:
    get:
      tags:
      - Setup
      summary: Get the Price
      description: Returns the price of a virtual device and license based on account number and other fields. Please note that the listed price does not include the price of any optional features added to the device, some of which are charged.
      operationId: retrievePriceUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: accountNumber
        in: query
        description: Account number
        required: false
        type: integer
        format: int32
      - name: metro
        in: query
        description: Metro
        required: false
        type: string
      - name: vendorPackage
        in: query
        description: Vendor package
        required: false
        type: string
      - name: licenseType
        in: query
        description: License type
        required: false
        type: string
      - name: softwarePackage
        in: query
        description: Software package
        required: false
        type: string
      - name: throughput
        in: query
        description: Throughput
        required: false
        type: integer
        format: int32
      - name: throughputUnit
        in: query
        description: Throughput unit
        required: false
        type: string
      - name: termLength
        in: query
        description: Term length (in months)
        required: false
        type: string
      - name: additionalBandwidth
        in: query
        description: Additional bandwidth (in Mbps)
        required: false
        type: integer
        format: int32
      - name: virtualDeviceUuid
        in: query
        description: Virtual device unique Id (only required if existing device is being modified)
        required: false
        type: string
      - name: deviceManagementType
        in: query
        description: The device management type
        required: false
        type: string
      - name: core
        in: query
        description: The number of cores
        required: false
        type: integer
        format: int32
      - name: secondaryAccountNumber
        in: query
        description: The secondary account number (for HA)
        required: false
        type: integer
        format: int32
      - name: secondaryMetro
        in: query
        description: Secondary metro (for HA)
        required: false
        type: string
      - name: secondaryAdditionalBandwidth
        in: query
        description: Secondary additional bandwidth (in Mbps for HA)
        required: false
        type: integer
        format: int32
      - name: accountUcmId
        in: query
        description: Account unique ID
        required: false
        type: string
      - name: orderingContact
        in: query
        description: Reseller customer username
        required: false
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/CompositePriceResponse'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/orderSummaries:
    get:
      tags:
        - Setup
      summary: Get Order Summary
      description: Gets the order summary as a printable pdf file. This API helps customers who have to go through a PO process at their end to make a purchase and need a formal quote
      operationId: getOrderSummaryUsingGET
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: accountNumber
          in: query
          description: Account number
          required: false
          type: integer
          format: int32
        - name: metro
          in: query
          description: Metro
          required: false
          type: string
        - name: vendorPackage
          in: query
          description: Vendor package
          required: false
          type: string
        - name: licenseType
          in: query
          description: License type
          required: false
          type: string
        - name: softwarePackage
          in: query
          description: Software package
          required: false
          type: string
        - name: throughput
          in: query
          description: Throughput
          required: false
          type: integer
          format: int32
        - name: throughputUnit
          in: query
          description: Throughput unit
          required: false
          type: string
        - name: termLength
          in: query
          description: Term length (in months)
          required: false
          type: string
        - name: additionalBandwidth
          in: query
          description: Additional bandwidth (in Mbps)
          required: false
          type: integer
          format: int32
        - name: virtualDeviceUuid
          in: query
          description: Virtual device unique Id (only required if existing device is being modified)
          required: false
          type: string
        - name: deviceManagementType
          in: query
          description: The device management type
          required: false
          type: string
        - name: core
          in: query
          description: The number of cores
          required: false
          type: integer
          format: int32
        - name: secondaryAccountNumber
          in: query
          description: Secondary account number (in case you have a device pair)
          required: false
          type: integer
          format: int32
        - name: secondaryMetro
          in: query
          description: Secondary metro (in case you have a device pair)
          required: false
          type: string
        - name: secondaryAdditionalBandwidth
          in: query
          description: Secondary additional bandwidth (in Mbps)
          required: false
          type: integer
          format: int32
        - name: accountUcmId
          in: query
          description: Account unique ID
          required: false
          type: string
        - name: orderingContact
          in: query
          description: Reseller customer username
          required: false
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: ContentType- application/pdf, charset UTF-8. The response is a pdf file that you can save or view online. 
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'


  /ne/v1/publicKeys:
    get:
      tags:
      - Setup
      summary: Get Public Keys
      description: Returns the SSH public keys associated with this organization. If you are a reseller, please pass the account number of you customer to get the public keys.
      operationId: getPublicKeysUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: accountUcmId
        in: query
        description: This field is for resellers. Please pass the accountUcmId of your customer to get the public keys. 
        required: false
        type: string

      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: "#/definitions/PageResponse-PublicKeys"

        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
    post:
      tags:
      - Setup
      summary: Create Public Key
      description: Creates a public key. If you are a reseller, pass the account number of your customer to create a key-name and key-value pair.
      operationId: postPublicKeyUsingPOST
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: publicKeyRequest
        description: keyName, keyValue, and keyType
        required: true
        schema:
          $ref: '#/definitions/PublicKeyRequest'
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '201':
          description: Created. The unique Id of the newly created key is in the location header of the response.

        '400':
          description: Bad Request
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '404':
          description: Resource Not Found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
 
            
  /ne/v1/notifications:
    get:
      tags:
      - Setup
      summary: Get Downtime Notifications
      description: Returns all planned and unplanned downtime notifications related to APIs and infrastructure. Please pass a token in the header.
      operationId: getNotificationsUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/DowntimeNotification'

        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  
  /ne/v1/files:
    post:
      tags:
      - Setup
      summary: Upload File (Post)
      description: Uploads a license or an initialization file. You can use this API to upload your bootstrap file generated from the Aviatrix controller portal. The response includes the unique ID of the uploaded file.

      operationId: uploadFileUsingPOST
      consumes:
      - multipart/form-data
      produces:
      - application/json
      parameters:
      - name: deviceManagementType
        in: formData
        description: Device management type, whether SELF-CONFIGURED or not 
        required: false
        type: string
      - name: file
        in: formData
        description: A license or a cloud_init file. For example, for Aviatrix, this is your bootsrap config file generated from the Aviatrix Controller portal.
        required: true
        type: file
      - name: licenseType
        in: formData
        description: Type of license (BYOL-Bring Your Own License)
        required: false
        type: string
      - name: metroCode
        in: formData
        description: Two-letter metro code.
        required: true
        type: string
      - name: deviceTypeCode
        in: formData
        description: Device type code, e.g., AVIATRIX_EDGE
        required: true
        type: string
      - name: processType
        in: formData
        description: Whether you are uploading a license or a cloud_init file. LICENSE or CLOUD_INIT
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/FileUploadResponse'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'


  /ne/v1/devices/licenseFiles:
    post:
      tags:
      - Licensing
      summary: Post License File
      description: In case you want to bring your own license (BYOL), you can use this API to post a license file before creating a virtual device.
      operationId: uploadLicenseUsingPOST
      consumes:
      - multipart/form-data
      produces:
      - application/json
      parameters:
      - name: file
        in: formData
        description: file
        required: true
        type: file
      - name: metroCode
        in: query
        description: metroCode
        required: true
        type: string
      - name: deviceTypeCode
        in: query
        description: deviceTypeCode
        required: true
        type: string
      - name: licenseType
        in: query
        description: licenseType
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/LicenseUploadResponse'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/devices/licenseFiles/{uuid}:
    post:
      tags:
      - Licensing
      summary: Post License {uuid}
      description: In case you want to bring your own license and have already created a virtual device, use this API to post a license file. You can also use this API to renew a license that is about to expire.
      operationId: uploadLicenseForDeviceUsingPOST
      consumes:
      - multipart/form-data
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique Id of a virtual device
        required: true
        type: string
      - name: file
        in: formData
        description: License file
        required: true
        type: file
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/LicenseUploadResponse'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/devices/{uuid}/licenseTokens:
    put:
      tags:
      - Licensing
      summary: Update License Token/ID/Code
      description: If you want to bring your own license (BYOL), you can use this API to post or update a license token after a virtual device is created.
      operationId: updateLicenseUsingPOST
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique Id of a virtual device
        required: true
        type: string
      - in: body
        name: request
        description: License token
        required: true
        schema:
          $ref: "#/definitions/LicenseUpdateRequest"
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '202':
          description: Accepted
          schema:
            $ref: "#/definitions/LicenseUploadResponse"
        '400':
          description: Bad Request
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '404':
          description: Resource Not Found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
  /ne/v1/devices:
    post:
      tags:
      - Virtual Device
      summary: Create Virtual Device
      description: Creates a virtual device. Sub-customers cannot choose the subscription licensing option. To create a device, you must accept the Order Terms. Call Get Order Terms to review the details. If you are creating an Equinix-Configured device, read your vendor's terms by calling Get Vendor Terms. 
      operationId: createVirtualDeviceUsingPOST
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: virtualDevice
        description: Create a virtual device (e.g., a router or a firewall)
        required: true
        schema:
          $ref: '#/definitions/VirtualDeviceRequest'
      - $ref: '#/parameters/authorizationHeader'
      - name: draft
        in: query
        description: draft
        required: false
        type: boolean
        default: false
      - name: draftUuid
        in: query
        description: draftUuid
        required: false
        type: string
      responses:
        '202':
          description: Request accepted. To check the status of your device, please call Get virtual device {uuid} API.
          schema:
            $ref: '#/definitions/VirtualDeviceCreateResponse'
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

    get:
      tags:
      - Virtual Device
      summary: Get Virtual Devices
      description: Returns all the available virtual devices, i.e. routers and routers, on the Network Edge platform.
      operationId: getVirtualDevicesUsingGET_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: offset
        in: query
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string 
        default: 20
        format: int32

      - name: metroCode
        in: query
        description: metroCode
        required: false
        type: string
      - name: status
        in: query
        description: status
        required: false
        type: string
      - name: showOnlySubCustomerDevices
        in: query
        description: Resellers may mark this Yes to see sub customer devices.
        required: false
        type: boolean
      - name: accountUcmId
        in: query
        description: Unique ID of the account.
        required: false
        type: string
    
      - name: searchText
        in: query
        description: Enter text to fetch only matching device names
        type: string
        
      - name: sort
        in: query
        description: Sorts the output based on field names.
        type: array
        items:
          type: string
        
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/VirtualDevicePageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'


  /ne/v1/devices/{uuid}:
    get:
      tags:
      - Virtual Device
      summary: Get Virtual Device {uuid}
      description: Returns the virtual device details of an existing device on the Network Edge platform. You must provide the unique ID of the existing device as a path parameter.
      operationId: getVirtualDeviceUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/VirtualDeviceDetailsResponse'
        '404':
          description: Resource Not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    patch:
      tags:
      - Virtual Device
      summary: Update Virtual Device
      description: Updates certain fields of a virtual device. You can only update the name, term length, status, and notification list of a virtual device. 
      operationId: updateVirtualDeviceUsingPATCH_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: The unique Id of the device.
        required: true
        type: string
      - in: body
        name: virtualDeviceUpdateRequestDto
        schema:
          "$ref": "#/definitions/VirtualDeviceInternalPatchRequestDto"
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: The request was successfully processed.

        '400':
          description: Bad request
          schema:
            "$ref": "#/definitions/FieldErrorResponse"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/ErrorMessageResponse"
    delete:
      tags:
      - Virtual Device
      summary: Delete Virtual Devices
      description: Delete a virtual device. For some device types (e.g., Palo Alto devices), you also need to provide a deactivation key as a body parameter. For a device pair, the deleteRedundantDevice field must be marked True so we delete both the devices simultaneously.
      operationId: deleteVRouterUsingDELETE
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique Id of the virtual device.
        required: true
        type: string
      - in: body
        name: deletionInfo
        description: deletionInfo
        required: false
        schema:
          $ref: "#/definitions/VirtualDeviceDeleteRequest"
      - name: deleteRedundantDevice
        in: query
        required: false
        type: boolean
        default: false
        description: Optional parameter in case you have a secondary device. As both primary and secondary devices are deleted simultaneously, this field must be marked True so we delete both the devices simultaneously.
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: The deletion is in progress. Call Get virtual device {uuid} API to check the status of your deletion.
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '404':
          description: Resource not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    put:
      tags:
        - Virtual Device
      summary: Update Device Draft
      description: This API is for updating a virtual device draft <br/>and does not support device update as of now.
      operationId: updateVirtualDeviceUsingPUT
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: draft
          in: query
          description: draft
          required: true
          type: boolean
          default: true
        - in: body
          name: virtualDevice
          description: Update virtual device details
          required: true
          schema:
            $ref: '#/definitions/VirtualDeviceRequest'
        - name: uuid
          in: path
          description: Unique Id of a Virtual Device 
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
  /ne/v1/devices/{virtualDeviceUUID}/softReboot:            
    get:
      tags:
      - Virtual Device
      summary: Device Reload History
      description: Returns the reload history of a device. Please send the unique Id of the device as a path parameter.
      operationId: getDeviceReloadUsingGET_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: query
        name: offset
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string          
        default: 20
        format: int32
      - name: virtualDeviceUUID
        in: path
        description: Unique ID of a virtual device. 
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/DeviceRebootPageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    post:
      tags:
      - Virtual Device
      summary: Trigger Soft Reboot
      description: Triggers the soft reboot of a device. Please send the unique Id of the device as a path parameter.
      operationId: postDeviceReloadUsingPOST_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: virtualDeviceUUID
        in: path
        description: Unique ID of a virtual device. 
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '201':
          description: A request to reboot has been created. 
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

   
  /ne/v1/aclTemplates:
    post:
      tags:
      - ACL Template
      summary: Create ACL Template
      description: Creates ACL templates. You can find the unique ID of the ACL template in the location header. 
      operationId: createDeviceACLTemplateUsingPost
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: aclTemplateRequest
        description: Creates an ACL template.
        required: true
        schema:
          $ref: '#/definitions/DeviceACLTemplateRequest'
      - name: accountUcmId
        in: query
        description: A reseller creating an ACL template for a customer can pass the accountUcmId of the customer.
        required: false
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '201':
          description: ACL template created. The response is the unique ID of the ACL template.
          schema:
            $ref: '#/definitions/VirtualDeviceCreateResponse'
        '400':
          description: Bad request
          schema:
            $ref: "#/definitions/FieldErrorResponse"
        '404':
          description: Resource Not found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
    get:
      tags:
      - ACL Template
      summary: Get ACL Templates
      description: Returns all ACL templates. The ACL templates list the networks that require access to the device.
      operationId: getDeviceACLTemplateUsingGET_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: query
        name: offset
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string          
        default: 20
        format: int32
      - name: accountUcmId
        in: query
        description: Unique ID of the account. A reseller querying for the ACLs of a customer should input the accountUcmId of the customer.
        required: false
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/DeviceACLPageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
  /ne/v1/aclTemplates/{uuid}:
    get:
      tags:
      - ACL Template
      summary: Get ACL Template {uuid}
      description: Returns details of any existing template. You must provide the unique ID of an existing template as a path parameter.
      operationId: getDeviceTemplatebyUuid
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique Id of an ACL template
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ACLTemplateDetailsResponse'

        '404':
          description: Resource Not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    delete:
      tags:
      - ACL Template
      summary: Delete ACL template
      description: Deletes an ACL template. You must provide the unique Id of the ACL template as a path parameter.
      operationId: deletedeviceACLUsingDELETE
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique ID of an ACL template
        required: true
        type: string
      - name: accountUcmId
        in: query
        description: A reseller deleting an ACL template for a customer must pass the accountUcmId of the customer.
        required: false
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: The deletion is in progress. 
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '404':
          description: Resource not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    put:
      tags:
        - ACL Template
      summary: Update ACL Template
      description: Updates an ACL template. You must pass the unique Id of the ACL template as a path parameter.
      operationId: updateDeviceACLTemplateUsingPUT
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique ID of an ACL template
          required: true
          type: string
        - name: accountUcmId
          in: query
          description: A reseller updating an ACL template for a customer must pass the accountUcmId of the customer.
          required: false
          type: string
        - in: body
          name: aclTemplateRequest
          description: Update an ACL template.
          required: true
          schema:
           $ref: '#/definitions/DeviceACLTemplateRequest'
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'


  /ne/v1/devices/{virtualDeviceUuid}/acl:
    get:
      tags:
      - ACL Template
      summary: Get ACL of Virtual Device
      description: Returns the details of ACL templates associated with a device. You must provide the unique ID of an existing virtual device as a path parameter.
      operationId: getDeviceTemplatesbyUuid
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: virtualDeviceUuid
        in: path
        description: Unique Id of a virtual device.
        required: true
        type: string

      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/InitialDeviceACLResponse'

        '404':
          description: Resource Not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    post:
      tags:
      - ACL Template
      summary: Add ACL to Virtual Device
      description: Updates the details of ACL templates associated with a device. You must provide the unique ID of an existing virtual device as a path parameter.
      operationId: postDeviceTemplatesbyUuid
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: virtualDeviceUuid
        in: path
        description: Unique Id of a virtual device.
        required: true
        type: string
      - in: body
        name: aclTemplateRequest
        description: Update the ACL of a device.
        required: true
        schema:
          $ref: '#/definitions/UpdateDeviceACLTemplateRequest'
      - name: accountUcmId
        in: query
        description: A reseller updating a device ACL template for a customer can pass the accountUcmId of the customer.
        required: false
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: Successfully updated


        '404':
          description: Resource Not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
    patch:
      tags:
      - ACL Template
      summary: Update ACL of Virtual Device
      description: Updates or removes the details of ACL templates associated with a device. You must provide the unique ID of an existing virtual device as a path parameter.
      operationId: patchDeviceTemplatesbyUuid
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: virtualDeviceUuid
        in: path
        description: Unique Id of a virtual device.
        required: true
        type: string
      - in: body
        name: aclTemplateRequest
        description: Update the ACL of a device.
        required: true
        schema:
          $ref: '#/definitions/UpdateDeviceACLTemplateRequest'
      - name: accountUcmId
        in: query
        description: A reseller updating a device ACL template for a customer can pass the accountUcmId of the customer.
        required: false
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: Successfully updated


        '404':
          description: Resource Not found
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/devices/{uuid}/additionalBandwidths:
    put:
      tags:
      - Virtual Device
      summary: Update Additional Bandwidth
      description: You can use this method to change or add additional bandwidth to a virtual device.
      operationId: updateAdditionalBandwidth
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: The unique Id of a virtual device
        required: true
        type: string
      - in: body
        name: request
        description: Additional Bandwidth
        required: true
        schema:
          $ref: "#/definitions/AdditionalBandwidthRequest"
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: No Content

        '400':
          description: Bad Request
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '404':
          description: Resource Not Found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
  /ne/v1/devices/{uuid}/interfaces:
    get:
      tags:
      - Virtual Device
      summary: Get Device Interfaces
      description: Returns the status of the interfaces of a device. You must pass the unique Id of the device as a path parameter. 
      operationId: getVirtualDeviceInterfacesUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            type: array
            items:
              $ref: "#/definitions/InterfaceBasicInfoResponse"
        '404':
          description: Resource Not found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
  /ne/v1/devices/{uuid}/ping:
    get:
      tags:
      - Virtual Device
      summary: Ping Virtual Device
      description: Pings a virtual device to ensure it's reachable. At this point, you can only ping a few SELF-CONFIGURED devices. 
      operationId: pingDeviceUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Virtual Device unique Id
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: The device is reachable.

        '400':
          description: Bad Request
          schema:
            $ref: "#/definitions/FieldErrorResponse"
        '404':
          description: Not Found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
            
            
  /ne/v1/devices/{virtualDeviceUuid}/interfaces/{interfaceId}/stats:
    get:
      tags:
      - Virtual Device
      summary: Get Interface Statistics
      description: Returns the throughput statistics of a device interface. Pass the unique Id of the device and the interface Id as path parameters. 
      operationId: getInterfaceStatisticsUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: virtualDeviceUuid
        in: path
        description: Unique Id of a device
        required: true
        type: string
      - name: interfaceId
        in: path
        description: Interface Id
        required: true
        type: string
      - name: startDateTime
        in: query
        description: Start time of the duration for which you want stats. (YYYY-MM-DDThh:mm:ssZ)
        required: true
        type: string
      - name: endDateTime
        in: query
        description: End time of the duration for which you want stats. (YYYY-MM-DDThh:mm:ssZ)
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Success
          schema:
            $ref: "#/definitions/InterfaceStatsObject"
        '404':
          description: Resource Not found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
  /ne/v1/devices/{virtualDeviceUuid}/resourceUpgrade:            
    get:
      tags:
      - Virtual Device
      summary: Get Device Upgrade History
      description: Returns the upgrade history of a device. Please send the unique Id of the device as a path parameter.
      operationId: getDeviceUpgradeUsingGET_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: query
        name: offset
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string          
        default: 20
        format: int32
      - name: virtualDeviceUuid
        in: path
        description: Unique ID of a virtual device. 
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/DeviceUpgradePageResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'


  /ne/v1/links:
    post:
      tags:
      - Device Link
      summary: Create Device Link
      description: Call this API to create a device link between virtual devices. You can include any devices that are registered and provisioned. 
      operationId: createLinkGroupUsingPOST
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: deviceLinkGroup
        description: New Device Link Group
        required: true
        schema:
          $ref: "#/definitions/DeviceLinkRequest"
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '202':
          description: Unique ID of the device link group.
          schema:
            $ref: "#/definitions/DeviceLinkGroupResponse"
        '400':
          description: Bad request
          schema:
            $ref: "#/definitions/FieldErrorResponse"
        '403':
          description: Forbidden
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
    get:
      tags:
      - Device Link
      description: This method returns device links. You can link any two or more devices that are registered and provisioned.
      summary: Get Device Links.
      operationId: getLinkGroupsUsingGET_1
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: metro
        in: query
        required: false
        type: string
        description: Metro Code
      - name: virtualDeviceUuid
        in: query
        required: false
        type: string
        description: Unique Id of a virtual device.
      - name: accountUcmId
        in: query
        required: false
        type: string
        description: Unique Id of the account. A reseller querying for a customer's link groups can pass the accountUcmId of the customer's account. To get the accountUcmId of your customer's account, please check the Equinix account creation portal (ECP) or call Get account API.
      - name: groupUuid
        in: query
        required: false
        type: string
        description: Unique Id of a link group

      - name: groupName
        in: query
        required: false
        type: string
        description: The name of a link group
        
      - name: offset
        in: query
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string 
        default: 20
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              $ref: "#/definitions/LinksPageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
  /ne/v1/links/{uuid}:
    get:
      tags:
      - Device Link
      summary: Get Device Link {uuid}
      description: This API will return a device link by its unique Id. Authorization checks are performed on the users of this API. 
      operationId: getLinkGroupByUUIDUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique Id of a device link group.
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: "#/definitions/DeviceLinkGroupDto"

        '404':
          description: Resource Not Found
          schema:
            $ref: "#/definitions/FieldErrorResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
    patch:
      tags:
      - Device Link
      summary: Update Device Link
      description: Call this API to update a device link. Authorization checks are performed on the users of this API.
      operationId: updateLinkGroupUsingPATCH
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: Unique Id of a device link group.
        required: true
        type: string
      - in: body
        name: deviceLinkGroup
        description: Device Link Group
        required: true
        schema:
          $ref: "#/definitions/DeviceLinkRequest"
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: Request fulfilled.

        '400':
          description: Bad request
          schema:
            $ref: "#/definitions/FieldErrorResponse"
        '403':
          description: Forbidden
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
    delete:
      tags:
      - Device Link
      summary: Delete Device Link
      description: This method deletes a device link group. Authorization checks are performed on the users of this API.
      operationId: deleteLinkGroupUsingDELETE
      consumes:
      - application/json
      produces:
      - "*/*"
      parameters:
      - name: uuid
        in: path
        description: Unique Id of a device link group.
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: Request fulfilled.
        '403':
          description: Forbidden
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '404':
          description: Resource not found
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"


  /ne/v1/bgp:
    post:
      tags:
      - BGP
      summary: Create BGP Peering
      description: Creates a BGP session to establish a point-to-point connection between your virtual device and cloud service provider. To create BGP peers, you must have a virtual device that is provisioned and registered and a provisioned connection.
      operationId: addBgpConfigurationUsingPOST
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: request
        description: BGP configuration details
        required: false
        schema:
          $ref: '#/definitions/BgpConfigAddRequest'
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '202':
          description: Accepted
          schema:
            $ref: '#/definitions/BgpAsyncResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '404':
          description: Resource Not Found
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

    get:
      tags:
      - BGP
      summary: Get BGP Peering
      description: Returns BGP configurations on the Network Edge platform. Authorization checks are performed on the users of this API.
      operationId: getBgpConfigurationsUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: virtualDeviceUuid
        in: query
        description: Unique Id of a virtual device
        required: false
        type: string
      - name: connectionUuid
        in: query
        description: Unique Id of a connection
        required: false
        type: string
      - name: status
        in: query
        description: Provisioning status of BGP Peering
        required: false
        type: string
      - name: accountUcmId
        in: query
        description: Unique Id of an account. A reseller querying for a customer's devices can input the accountUcmId of the customer's account. 
        required: false
        type: string
      - name: offset
        in: query
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string 
        default: 20
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/BgpInfo'
        '404':
          description: Resource Not Found
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/bgp/{uuid}:
    put:
      tags:
      - BGP
      summary: Update BGP Peering
      description: Updates an existing BGP peering configuration identified by its unique Id. Authorization checks are performed on the users of this API.
      operationId: updateBgpConfigurationUsingPUT
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - in: body
        name: request
        description: BGP config
        required: false
        schema:
          $ref: '#/definitions/BgpUpdateRequest'
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '202':
          description: Accepted
          schema:
            $ref: '#/definitions/BgpAsyncResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '404':
          description: Resource Not Found
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    get:
      tags:
      - BGP
      summary: Get BGP Peering {uuid}
      description: Gets a BGP peering configuration by its unique Id. Authorization checks are performed on the users of this API.
      operationId: getBgpConfigurationUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/BgpInfo'
        '404':
          description: Resource Not Found
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/vpn:
    post:
      tags:
      - VPN
      summary: Create VPN Configuration
      description: Creates a VPN configuration. You must have a provisioned virtual device with a registered license to create a VPN.
      operationId: createVpnUsingPOST
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: request
        description: VPN info
        required: false
        schema:
          $ref: '#/definitions/Vpn'
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '201':
          description: Created Successfully

        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '404':
          description: Resource Not Found
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    get:
      tags:
      - VPN
      summary: Get VPN Configurations
      description: Gets all VPN configurations by user name and specified parameter(s). Authorization checks are performed on the users of this API.
      operationId: getVpnsUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: statusList
        in: query
        description: One or more desired status
        required: false
        type: array
        items:
          type: string
        collectionFormat: multi
        enum:
        - PROVISIONED
        - PROVISIONING
        - PROVISIONING_RETRYING
        - UPDATING
        - PROVISIONING_UPDATE_RETRYING
        - DEPROVISIONED
        - DEPROVISIONING
        - DEPROVISIONING_RETRYING
        - PROVISIONING_FAILED
        - PROVISIONING_UPDATE_FAILED
        - DEPROVISIONING_FAILED
      - name: virtualDeviceUuid
        in: query
        description: Unique Id of a virtual device
        required: false
        type: string
      - name: offset
        in: query
        description: Specifies where to start a page. It is the starting point of the collection returned from the server.
        required: false
        type: string
        default: 0
        format: int32
      - name: limit
        in: query
        description: Specifies the page size.
        required: false
        type: string 
        default: 20
        format: int32

      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: "#/definitions/VpnResponseDto"
        '403':
          description: Unauthorized User
          schema:
            $ref: "#/definitions/FieldErrorResponse"
        '500':
          description: Internal Server Error
          schema:
            $ref: "#/definitions/ErrorMessageResponse"
    
  /ne/v1/vpn/{uuid}:
    get:
      tags:
      - VPN
      summary: Get VPN Configuration {uuid}
      description: Gets a VPN configuration by its unique Id. Authorization checks are performed on the users of this API.
      operationId: getVpnByUuidUsingGET
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: Read Successfully
          schema:
            $ref: '#/definitions/VpnResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '404':
          description: Resource Not found
          schema:
            type: string
            enum:
            - INTERNAL_SERVER_ERROR
            - INVALID_JSON_FORMAT
            - RESOURCE_NOT_FOUND
            - UNAUTHORIZED_USER
            - INVALID_REQUEST_FORMAT
            - ZONE_NOT_FOUND
            - SOURCE_ZONE_NOT_FOUND
            - DESTINATION_ZONE_NOT_FOUND
            - ZONES_NOT_PART_SAME_DEVICE
            - CONNECTION_ALREADY_PART_OF_ZONE
            - ZONE_PART_OF_FIREWALL
            - CONNECTION_NOT_AVAILABLE
            - ZONE_ALREADY_EXISTS
            - FIREWALL_NOT_FOUND
            - FIREWALL_ALREADY_EXISTS
            - RULE_ALREADY_EXISTS
            - RULE_NOT_FOUND
            - RULE_NOT_PART_OF_FIREWALL
            - VIRTUAL_DEVICE_NOT_FOUND
            - VIRTUAL_DEVICE_NOT_PROVISIONED
            - DEVICE_LICENSE_NOT_REGISTERED
            - MGMT_INTERFACE_NOT_AVAILABLE
            - INTERFACE_NOT_AVAILABLE
            - INTERFACE_NOT_PROVISIONED
            - NAT_CONFIG_ALREADY_EXISTS
            - NAT_CONFIG_NOT_FOUND
            - ADD_NAT_CONFIG_FAILED
            - EDIT_NAT_CONFIG_FAILED
            - REMOVE_NAT_CONFIG_FAILED
            - NAT_POOL_TYPE_CHANGE_DISABLED
            - INVALID_ACTION_TYPE
            - INVALID_ADD_ACTION
            - INVALID_MODIFY_ACTION
            - INVALID_STATIC_NAT_UUID
            - OVERLAP_IP_CONFLICT
            - CONNECTION_NOT_FOUND
            - BGP_NOT_FOUND
            - INVALID_IP_ADDRESS
            - INVALID_NETWORK_SERVICE_TYPE
            - IBX_NOT_FOUND
            - PRICE_SERVICE_REQUEST_INVALID
            - PRICE_SERVICE_REQUEST_FAILED
            - BGP_CONFIG_NOT_FOUND
            - BGP_NEIGHBOR_INFO_NOT_FOUND
            - LOCAL_IP_ADDRESS_NOT_IN_RANGE
            - REMOTE_IP_ADDRESS_NOT_IN_RANGE
            - CONNECTION_DEVICE_NOT_FOUND
            - CONNECTION_NOT_PROVISIONED
            - BROADCAST_ADDRESS_NOT_ALLOWED
            - NETWORK_ADDRESS_NOT_ALLOWED
            - OVERLAP_LOCAL_IP_ADDRESS
            - DATA_INTERFACE_NOT_AVAILABLE
            - ADD_BGP_CONFIG_FAILED
            - REMOVE_BGP_CONFIG_FAILED
            - INTERFACE_NOT_FOUND
            - UPDATE_BGP_CONFIG_FAILED
            - EXISTING_CONNECTION_BGP
            - BGP_EXISTING_NAT_SERVICES
            - BGP_EXISTING_FIREWALL_SERVICES
            - BGP_UPDATE_NOT_ALLOWED
            - BGP_EXISTING_VPN_SERVICES
            - REMOTE_LOCAL_SAME_IP_ADDRESS
            - BGP_FAILED_ASN_UPDATE
            - BGP_FAILED_INTERFACE_DESC
            - BGP_NSO_FAILED_FETCH
            - BGP_NSO_FAILED_UPDATE
            - BGP_FAILED_VPN_UPDATE
            - BGP_RETRY_FAILED
            - VPN_NAME_ALREADY_IN_USE
            - VPN_DEVICE_NOT_FOUND
            - VPN_DEVICE_USER_KEY_MISMATCH
            - VPN_DEVICE_NOT_REGISTERED
            - VPN_NO_CONFIGURED_CLOUD_BGP_FOUND
            - VPN_DEVICE_ASN_NOT_CONFIGURED
            - VPN_MATCHING_ASN
            - VPN_LIMIT_EXCEEDED
            - VPN_NO_INTERFACES_FOUND
            - VPN_SSH_INTERFACE_ID_NOT_FOUND
            - VPN_INVALID_SSH_INTERFACE_ID
            - VPN_CONFIG_NOT_FOUND
            - VPN_NSO_CREATE_TRANSIENT_FAILURE
            - VPN_NSO_CREATE_PERMANENT_FAILURE
            - VPN_NSO_DELETE_TRANSIENT_FAILURE
            - VPN_NSO_DELETE_PERMANENT_FAILURE
            - VPN_PEER_IP_ALREADY_IN_USE
            - VPN_DEVICE_MISSING_IPSEC_PACKAGE
            - VPN_INVALID_STATUS_LIST
            - VPN_RESTRICTED_ASN
            - VPN_UNAUTHORIZED_ACCESS
            - VPN_ALREADY_DELETED
            - VPN_RESTRICTED_IP_ADDRESS
            - VPN_DEVICE_NOT_IN_READY_STATE
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    put:
      tags:
      - VPN
      summary: Update VPN Configuration
      description: Update a VPN configuration by its unique Id. Authorization checks are performed on the users of this API.
      operationId: updateVpnConfigurationUsingPut
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - in: body
        name: request
        description: VPN info
        required: false
        schema:
          $ref: '#/definitions/Vpn'
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
        '204':
          description: Request fulfilled
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    delete:
      tags:
      - VPN
      summary: Delete VPN Configuration
      description: Deletes a VPN configuration by its unique Id. Authorization checks are performed on the users of this API.
      operationId: removeVpnConfigurationUsingDELETE
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: uuid
        in: path
        description: uuid
        required: true
        type: string
      - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
        '204':
          description: Request fulfilled
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

  /ne/v1/deviceBackups:
    get:
      tags:
        - Device Backup & Restore
      summary: Get Backups of Device
      description: Returns the backups of a virtual device. Authorization checks are performed on the users of this API.
      operationId: getDeviceBackupsUsingGET
      consumes:
        - application/json
      produces:
        - application/json
      parameters:

        - name: virtualDeviceUuid
          in: query
          description: Unique ID of a virtual device
          required: true
          type: string
        - name: status
          in: query
          description: An array of status values
          required: false
          type: array
          items:
           type: string
        - name: offset
          in: query
          description: Specifies where to start a page. It is the starting point of the collection returned from the server.
          required: false
          type: string
          default: 0
          format: int32
        - name: limit
          in: query
          description: Specifies the page size.
          required: false
          type: string 
          default: 20
          format: int32

        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/DeviceBackupPageResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    post:
      tags:
        - Device Backup & Restore
      summary: Creates Device Backup
      description: Creates the backup of a virtual device. Authorization checks are performed on the users of this API. 
      operationId: createDeviceBackupUsingPOST
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: Device backup info
          required: true
          schema:
            $ref: '#/definitions/DeviceBackupCreateRequest'
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '202':
          description: Accepted
          schema:
            $ref: '#/definitions/SshUserCreateResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/deviceBackups/{uuid}:
    get:
      tags:
        - Device Backup & Restore
      summary: Get Backups of Device {uuid}
      description: Returns the details of a backup by its unique ID. Authorization checks are performed on the users of this API. 
      operationId: getDetailsOfBackupsUsingGET
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique ID of a backup
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/DeviceBackupInfoVerbose'
        '400':
          description: Invalid input
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
    patch:
      tags:
        - Device Backup & Restore
      summary: Update Device Backup
      description: Updates the name of a backup. Authorization checks are performed on users of this API. 
      operationId: updateDeviceBackupUsingPATCH
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique ID of a backup
          required: true
          type: string
        - in: body
          name: request
          description: Update device backup
          required: true
          schema:
            $ref: '#/definitions/DeviceBackupUpdateRequest'
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: Updated successfully

        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

    delete:
      tags:
        - Device Backup & Restore
      summary: Delete Backup of Device
      description: Deletes a backup by its unique ID. Authorization checks are performed on users of this API.  
      operationId: deleteDeviceBackupUsingDELETE
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique Id a backup
          required: true
          type: string

        - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: Deleted successfully.

        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '404':
          description: Resource Not Found
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
  /ne/v1/deviceBackups/{uuid}/download:
    get:
      tags:
        - Device Backup & Restore
      summary: Download a Backup 
      description: Downloads the backup of a device by its backup ID. Authorization checks are performed on the users of this API. 
      operationId: downloadDetailsOfBackupsUsingGET
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique ID of a backup
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/BackupDownloadResponse'
        '400':
          description: Invalid input
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
  /ne/v1/devices/{uuid}/restoreAnalysis:
    get:
      tags:
        - Device Backup & Restore
      summary: Checks Feasibility of Restore
      description: Checks the feasibility of restoring the backup of a virtual device. Authorization checks are performed on the users of this API. 
      operationId: checkDetailsOfBackupsUsingGET
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique ID of a device
          required: true
          type: string
        - name: backupUuid
          in: query
          description: Unique ID of a backup
          type: string
          required: true
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RestoreBackupInfoVerbose'
        '400':
          description: Invalid input
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
  /ne/v1/devices/{uuid}/restore:
    patch:
      tags:
        - Device Backup & Restore
      summary: Restores a backup
      description: Restores any backup of a device. Authorization checks are performed on users of this API. 
      operationId: restoreDeviceBackupUsingPATCH
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: uuid
          in: path
          description: Unique ID of a backup
          required: true
          type: string
        - in: body
          name: request
          description: Update device backup
          required: true
          schema:
            $ref: '#/definitions/DeviceBackupUpdateRequest'
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: The backup was successfully restored

        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'
            
  /ne/v1/devices/{virtualDeviceUuid}/rma:

    post:
      tags:
        - Device RMA
      summary: Trigger Device RMA
      description: Triggers a request to create an RMA of a device. The payload to create an RMA is different for different vendors. You will need to enter a license to create an RMA.
      operationId: postDeviceRMAUsingPOST
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: virtualDeviceUuid
          in: path
          description: Unique ID of a device
          required: true
          type: string
        - in: body
          name: request
          description: Post RMA request
          required: true
          schema:
            $ref: '#/definitions/DeviceRMAPostRequest'
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '204':
          description: You successfully triggered an RMA request.

        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

  /ne/v1/devices/{deviceType}/repositories:
    get:
      tags:
        - Download Image
      summary: Get Downloadable Images
      description: Returns the downloadable images of a device type. Pass any device type as a path parameter to get the list of downloadable images. 
      operationId: getDownloadableImagesUsingGET
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: deviceType
          in: path
          description: Device type
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/GetDownloadableImageResponse'
        '400':
          description: Invalid input
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'

  /ne/v1/devices/{deviceType}/repositories/{version}/download:
    post:
      tags:
        - Download Image
      summary: Download an Image
      description: Returns a link to download image. You need to provide a device type and version as path parameters.
      operationId: postDownloadImage
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: deviceType
          in: path
          description: Device type
          required: true
          type: string
        - name: version
          in: path
          description: Version
          required: true
          type: string
        - $ref: '#/parameters/authorizationHeader'
      responses:
        '202':
          description: Download link of the image
          schema:
            $ref: '#/definitions/PostDownloadImageResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '403':
          description: Unauthorized User
          schema:
            $ref: '#/definitions/FieldErrorResponse'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/ErrorMessageResponse'


definitions:
  AgreementStatusResponse:
    type: object
    properties:
      errorMessage:
        type: string
        example:
      isValid:
        type: string
        example: true
      terms:
        type: string
        example:
      termsVersionID:
        type: string
        example: 

  GetDownloadableImageResponse:
    type: array
    items:
      $ref: '#/definitions/ListOfDownloadableImages'
    
  
  ListOfDownloadableImages:
    type: object
    properties:
      uuid:
        type: string
        example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
        description: The unique Id of the downloadable link.
      deviceType:
        type: string
        example: C8000V
        description: Device type. As of now, we only support C8000V.
      imageName:
        type: string
        example: CiscoSyst-C8000VCon-17.11.01a-3270
        description: Device type. As of now, we only support C8000V.
      version:
        type: string
        example: 17.11.01a
        description: Device version      
      
  PostDownloadImageResponse:
    type: object
    properties:
      downloadLink:
        type: string
        example: https://mb2lxfsprod.equinix.com/owncloud/index.php/s/7BTqXaZbggTURBO/download
        description: The link to download the image
        



      
  InterfaceStatsObject:
    type: object
    properties:
      stats:
        type: object
        $ref: '#/definitions/InterfaceStatsDetailObject'
        
  InterfaceStatsDetailObject:
    type: object
    properties:
      startDateTime:
        type: string
        example: 2023-11-10T19:06:06Z
        description: Start time of the duration for which you want stats.
      endDateTime:
        type: string
        example: 2023-11-17T19:06:06Z
        description: End time of the duration for which you want stats.
      unit:
        type: string
        example: Mbps
        description: Unit.
      inbound:
        type: object
        description: An object that has the stats of inbound traffic.
        $ref: '#/definitions/InterfaceStatsofTraffic'
      outbound:
        type: object
        description: An object that has the stats of outbound traffic.
        $ref: '#/definitions/InterfaceStatsofTraffic'

  InterfaceStatsofTraffic:
    type: object
    properties:
      max:
        type: number
        example: 29.90603462474768
        description: Max throughput during the time interval.
      mean:
        type: number
        example: 6.341387726453309
        description: Mean throughput during the time interval.
      lastPolled:
        type: number
        example: 4.2551751570268115
        description: The throughput of the last polled data.
      metrics:
        type: array
        items:
          $ref: '#/definitions/PolledThroughputMetrics'

  PolledThroughputMetrics:
    type: object
    properties:
      intervalDateTime:
        type: string
        example: 2023-11-10T19:32:14Z
        description: The end of a polled time period.
      mean:
        type: number
        example: 9.549439345514042
        description: Mean traffic throughput.
        
        
        
    
  DeviceRMAPostRequest:
    type: object
    required:
      - version
    properties:
      version:
        type: string
        example: 17.09.01a
        description: Any version you want.
      cloudInitFileId:
        type: string
        example: 029a0bcd-0b2f-4bc5-b875-b506aa4b9738
        description: For a C8KV device, this is the Id of the uploaded bootstrap file. Upload your Cisco bootstrap file by calling Upload File. In the response, you'll get a fileUuid that you can enter here as cloudInitFileId. This field may be required for some vendors.
      licenseFileId:
        type: string
        example: 329a0bcd-0b2f-4bc5-b875-b506aa4b9730
        description: This is the Id of the uploaded license file. For a CSR1KV SDWAN device, upload your license file by calling Post License File. In the response, you'll get a fileId that you can enter here as licenseFileId. This field may be required for some vendors.
      token:
        type: string
        example: 897gjikk888
        description: License token. For a cluster, you will need to provide license tokens for both node0 and node1. To get the exact payload for different vendors, check the Postman script on the API Reference page of online documentation.
      vendorConfig:
        type: object
        description: An object that has vendor specific details. This may be required for some  vendors.
        $ref: '#/definitions/RMAVendorConfig'
      userPublicKey:
        type: object
        description: An object that has userPublicKey details.
        $ref: '#/definitions/UserPublicKeyRequest'

  RMAVendorConfig:
    type: object
    properties:
      siteId:
        type: string
        example: 567
        description: Physical location within the Viptela overlay network, such as a branch office, or a campus (relevant only for Cisco SD-WANs)
      systemIpAddress:
        type: string
        description: IP assigned to the router and vSmart controller (relevant only for Cisco SD-WANs)
        example: 192.164.0.0
      licenseKey:
        type: string
        example: "6735-vwe64568-6a91-4112-8734-bea12d91f7y7"
        description: License key. Mandatory for some devices.
      licenseSecret:
        type: string
        example: "h5j0i45e83324pblbfca764532c4a640e7801f0"
        description: License secret (Secret key). Mandatory for some devices.
      controller1:
        type: string
        example: 54.219.248.29
        description: For Fortinet devices, this is the System IP address.
      adminPassword:
        type: string
        example: ZQeIDI7sUd
        description: The administrative password of the device. You can use it to log in to the console. This field is not available for all device types. Should be at least 6 characters long and must include an uppercase letter and a number. This field may be required for some vendors.
      activationKey:
        type: string
        example: GJUK-JM2X-59BJ-2TDJ    
        description: Available on VMware Orchestration Portal
      provisioningKey:
        type: string
        example: provisioningKeysample
        description: Mandatory for Zscaler devices
      panoramaIpAddress: 
        type: string
        example: 1.1.1.1
        description: IP address of the Panorama controller. Provide this value to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access
      panoramaAuthKey:
        type: string
        example: 123456
        description: This key supports secure onboarding of the Palo Alto firewall devices. Provide this value to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access.
      
        
        
        

  AgreementAcceptRequest:
    type: object
    properties:
      accountNumber:
        type: string
        example: 456446
      apttusId:
        type: string
        example: c2Z34000002CXRm
        description: The version number of the agreement
  AgreementAcceptResponse:
    type: object
    properties:
      status:
        type: string
  metroCodes:
    type: string
    example: "SV"
  versionDetails:
    type: object
    properties:
     cause:
       $ref: '#/definitions/versionDetails'
     version:
        type: string
        example: 16.09.02
     imageName:
        type: string
        example: csr-16.09.02
     versionDate:
        type: string
        example: 2019-01-01
        description: The date the software was released
     retireDate:
        type: string
        example: 2024:12:12
        description: The date the software will no longer be available for new devices. This field will not show if the software does not have a retire date.
     status:
        type: string
        example: ACTIVE
     stableVersion:
        type: string
        example: true
     allowedUpgradableVersions:
        type: array
        items:
         type: string
         example: 16.09.03
     supportedLicenseTypes:
        type: array
        items:
          type: string
        example:
         - BYOL
         - Subscription
  SshUserCreateRequest:
    type: object
    required:
      - deviceUuid
      - password
      - username
    properties:
      username:
        type: string
        example: user1
        description: At least 3 and upto a maximum of 32 alphanumeric characters. The only special characters allowed are - _
      password:
        type: string
        example: pass12
        description: At least 6 and upto a maximum of 12 alphanumeric characters. The only special characters allowed are - _ $ @
      deviceUuid:
        type: string
        example: 3da0a663-20d9-4b8f-8c5d-d5cf706840c8
        description: The unique Id of a virtual device.
  DeviceBackupCreateRequest:
    type: object
    required:
      - deviceUuid
      - name
    properties:
      deviceUuid:
        type: string
        example: 3da0a663-20d9-4b8f-8c5d-d5cf706840c8
        description: The unique Id of a virtual device.
      name:
        type: string
        example: My New Backup
        description: The name of backup.

  DeviceBackupUpdateRequest:
    type: object
    required:
      - name
    properties:
      name:
        type: string
        example: My New Backup
        description: The name of backup.

  SshUserCreateResponse:
    type: object
    properties:
      uuid:
        type: string
        example: 12828472-e6e9-4f2b-98f7-b79cf0fab4ff
        description: The ID of the newly created SSH user.
  DeviceBackupCreateResponse:
    type: object
    properties:
      uuid:
        type: string
        example: 12828472-e6e9-4f2b-98f7-b79cf0fab4ff
        description: The ID of the backup that is being created.

  DeviceRMAInfo:
    type: object
    properties:
      data:
        type: array
        description: Array of previous RMA requests 
        items:
          $ref: '#/definitions/RmaDetailObject'
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"


  RmaDetailObject:
    type: object
    properties: 
      deviceUUID:
        type: string
        example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
        description: The unique Id of a device
      version:
        type: string
        example: 17.06.05
        description: Device version
      status:
        type: string
        example: SUCCESS
        description: Status of the request
      requestType:
        type: string
        example: RMA
        description: Type of request
      requestedBy:
        type: string
        example: nfvsit01
        description: Requested by
      requestedDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Requested date
      completiondDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Requested date     
        
        

  SshUserInfoVerbose:
    type: object
    properties:
      uuid:
        type: string
        description: The unique Id of the ssh user.
      username:
        type: string
        description: The user name of the ssh user.
      deviceUuids:
        type: array
        description: The devices associated with this ssh user.
        items:
          type: string
          example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
      metroStatusMap:
        type: object
        description: Status and error messages corresponding to the metros where the user exists
        additionalProperties:
          $ref: '#/definitions/MetroStatus'

  DeviceBackupInfoVerbose:
    type: object
    properties:
      uuid:
        type: string
        description: The unique Id of the device backup.
        example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
      name:
        type: string
        description: The name of the backup.
        example: My New Backup
      version:
        type: string
        description: Version of the device
        example: 16.09.02
      type:
        type: string
        description: The type of backup.
        example: CONFIG
      status:
        type: string
        description: The status of the backup.
        example: COMPLETED
      createdBy:
        type: string
        example: cust0001
        description: Created by.
      lastUpdatedDate:
        type: string
        example: '2018-01-30T10:30:31.387Z'
        description: Last updated date.
      downloadUrl: 
        type: string
        example: /nfv/v1/deviceBackups/02cd28c5-3e4b-44ff-ad86-bb01eb3e5863/download
        description: URL where you can download the backup.
      deleteAllowed: 
        type: boolean
        example: true
        description: Whether or not you can delete the backup.
      restores:
        type: array
        items:
          $ref: '#/definitions/PreviousBackups'
      deviceUuid:
        type: string
        example: 78fb5675-5c3f-4275-adba-0c9e3c26c78c
        description: Unique Id of the device

            
  PreviousBackups:
    type: object
    properties:
      uuid:
        type: string
        description: The unique Id of a backup.
        example: 7hgj5675-5c3f-4275-adba-0c9e3c26c45y
      status:
        type: string
        description: The status of the backup.
        example: COMPLETED
      createdBy:
        type: string
        example: cust0001
        description: Created by.
      createdDate:
        type: string
        example: '2018-01-30T10:30:31.387Z'
        description: Created date.
      lastUpdatedDate:
        type: string
        example: '2018-01-30T10:30:31.387Z'
        description: Last updated date.
        

  RestoreBackupInfoVerbose:
    type: object
    properties:
      deviceBackup:
        type: object
        description: An object that has the device backup details.
        properties:
          deviceBackup:
            $ref: '#/definitions/DeviceBackupRestore'
      services:
        type: object
        description: An object that has the analysis of services associated with the backup or services added to the device since the backup.
        properties:
          service_name:
            $ref: '#/definitions/ServiceInfo'
      restoreAllowedAfterDeleteOrEdit:
        type: boolean
        description: If True, the backup is restorable once you perform the recommended opertions. If False, the backup is not restorable.
        example: false


  DeviceBackupRestore:
    type: object
    properties:
      uuid:
        type: string
        description: The unique ID of the backup.
        example: ac8a8497-1b6e-42d1-9075-acf23a62ed50
      name:
        type: string
        description: The name of the backup.
        example: My New Backup
      status:
        type: string
        description: The status of the backup.
        example: COMPLETED
      deleteAllowed: 
        type: boolean
        example: true
        description: Whether you can delete the backup. Only backups in the COMPELTED or FAILED states can be deleted. 

  ServiceInfo:
    type: object
    properties:
      serviceId:
        type: string
        description: The unique ID of the service.
        example: ac8a8497-1b6e-42d1-9075-acf23a62ed50
      serviceName:
        type: string
        description: The name of the service.
        example: L2 Connection with AWS
      operationNeededToPerform:
        type: string
        description: The operation you must perform to restore the backup successfully. 
          UNSUPPORTED- You cannot restore this backup.
          DELETE- You need to delete this service to restore the backup.
          NONE- You do not need to change anything to restore the backup.
        example: DELETE

  
  SshUserUpdateRequest:
    type: object
    required:
      - password
    properties:
      password:
        type: string
        example: pass12
        description: At least 6 and upto a maximum of 12 alphanumeric characters. The only special characters allowed are - _ $ @
  SshUserInfoDissociateResponse:
    type: object
    properties:
      sshUserDeleted:
        type: boolean
        example: false
        description: true = the ssh user has been deleted since there are no more devices associated with this user; false = the ssh user has not been deleted since associations with devices exist.
      sshUserToDeviceAssociationDeleted:
        type: boolean
        example: true
  MetroStatus:
    type: object
    properties:
      status:
        type: string
        example: ACTIVE
        description: Whether the ssh user is active, pending, or failed in the metro.


  VirtualDeviceDeleteRequest:
    type: object
    properties:
      deactivationKey:
        type: string
        example: 8dfbd5ba3610234d9e550032603cc34762af140533e2c1de0111d3451d16eefd
        description: If you do not provide a deactivation key for a Palo Alto BYOL device, you must contact your vendor to release the license.
      secondary:
        $ref: "#/definitions/SecondaryDeviceDeleteRequest"
  SecondaryDeviceDeleteRequest:
    type: object
    properties:
      deactivationKey:
        type: string
        example: 8dfbd5ba3610234d9e550032603cc34762af140533e2c1de0111d3451d16eefd
        description: Object that holds the secondary deactivation key for a redundant device. If you do not provide a deactivation key for a Palo Alto BYOL device, you must contact your vendor to release the license.
  VirtualDeviceCreateResponse:
    type: object
    properties:
      uuid:
        type: string
        example: 877a3aa2-c49a-4af1-98a6-007424e737ae
  ErrorMessageResponse:
    type: object
    properties:
      errorCode:
        type: string
      errorMessage:
        type: string
      moreInfo:
        type: string
      property:
        type: string
  PageResponseDto-VirtualDeviceType:
    type: object
    properties:
      data:
        type: array
        description: Array of available virtual device types
        items:
          $ref: '#/definitions/VirtualDeviceType'
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"

  Throughput:
    type: object
    properties:
      throughput:
        type: integer
        format: int32
        example: 500
      throughputUnit:
        type: string
        example: Mbps
      metroCodes:
        type: array
        description: Metros where the license is available
        items:
          $ref: '#/definitions/metroCodes'
  Throwable:
    type: object
    properties:
      cause:
        $ref: '#/definitions/Throwable'
      localizedMessage:
        type: string
      message:
        type: string
      stackTrace:
        type: array
        items:
          $ref: '#/definitions/StackTraceElement'
      suppressed:
        type: array
        items:
          $ref: '#/definitions/Throwable'
  sshUsers:
    type: object
    properties:
      sshUsername:
        type: string
        description: sshUsername. This should be minimum 3 and maximum 32 characters and include alphanumeric characters, dash, and underscore.
        example: cust0001_DC
      sshPassword:
        type: string
        description: sshPassword
        example: projPass
      sshUserUuid:
        type: string
        description: sshUserUuid
        example: 999a3aa2-c49a-dddd-98a6-007424e73777
      action:
        type: string
        description: action
        example: CREATE
  SoftwarePackage:
    type: object
    properties:
      name:
        type: string
        description: Software package name
        example: Security
      packageCode:
        type: string
        example: SEC
        description: Software package code
      licenseType:
        type: string
        example: appx
        description: Software package license type
      versionDetails:
        type: array
        items:
         $ref: '#/definitions/versionDetails'
  StackTraceElement:
    type: object
    properties:
      className:
        type: string
      fileName:
        type: string
      lineNumber:
        type: integer
        format: int32
      methodName:
        type: string
      nativeMethod:
        type: boolean
  VirtualDeviceType:
    type: object
    properties:
      deviceTypeCode:
        type: string
        example: C8000V
        description: The type of the device.
      name:
        type: string
        description: The name of the device.
        example: C8000V router
      description:
        type: string
        example: Extend your enterprise network to public and private clouds with
          the C8000V series.
        description: The description of the device.
      vendor:
        type: string
        description: The vendor of the device.
        example: Cisco
      category:
        type: string
        example: ROUTER
        description: The type of the virtual device, whether router or firewall.
      maxInterfaceCount:
        type: integer
        description: The maximum available number of interfaces.
      defaultInterfaceCount:
        type: integer
        description: The default number of interfaces.
      clusterMaxInterfaceCount:
        type: integer
        description: The maximum number of available interfaces in case you are clustering.
      clusterDefaultInterfaceCount:
        type: integer
        description: The default number of available interfaces in case you are clustering.
      availableMetros:
        type: array
        description: An array of metros where the device is available.
        items:
          $ref: '#/definitions/Metro'

      softwarePackages:
        type: array
        description: An array of available software packages
        items:
          $ref: '#/definitions/SoftwarePackage'
      deviceManagementTypes:
        type: object
        properties:
          EQUINIX-CONFIGURED:
            type: object
            $ref: '#/definitions/EquinixConfiguredConfig'
          SELF-CONFIGURED:
            type: object
            $ref: '#/definitions/SelfConfiguredConfig'    

        
  LicenseOptions:
    type: object
    properties:
      name:
        type: string
        description: The license name
        example: Subscription
      type:
        description: The license type
        type: string
        example: Sub
      metroCodes:
        type: array
        description: The metros where the license is available
        items:
          $ref: '#/definitions/metroCodes'
  DeviceACLTemplateRequest:
    type: object
    required:
    - name
    - description
    - inboundRules
    - protocol
    - srcPort
    - dstPort
    - subnet
    properties:
      name:
        type: string
        example: Test Template
        description: The ACL template name.
      description:
        type: string
        example: Test Template Description
        description: The ACL template description.
      projectId:
        type: string
        example: XXXXX-XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXXX
        description: Customer project Id. Check your projectId under Resource Management on Equinix Portal. You should have access to a project to see or create assets under it. Equinix will assign a projectId if you do not provide one. 
      inboundRules:
        type: array
        description: An array of inbound rules.
        items:
          $ref: '#/definitions/InboundRules'

  UpdateDeviceACLTemplateRequest:
    type: object
    required:
    - aclDetails
    properties:
      aclDetails:
        type: array
        description: An array of ACLs.
        items:
          $ref: '#/definitions/ACLDetails'

  ACLDetails:
    type: object
    properties:
      interfaceType:
        type: string
        example: WAN 
        description: Interface type, whether MGMT or WAN. 
      uuid:
        type: string
        example: ce7ef79e-31e7-4769-be5b-e192496f48ab
        description: The unique ID of ACL.

        
  BackupDownloadResponse:
    type: string
    example: Current configuration 9531 bytes
    description: The configuration of the device in a string format.     
  InboundRules:
    type: object
    properties:

      protocol:
        type: string
        example: TCP
        description: Protocol.
      srcPort:
        type: string
        example: 53
        description: Source port.
      dstPort:
        type: string
        example: any
        description: Destination port.
      subnet:
        type: string
        description: An array of subnets.
        example: 192.168.1.1/32    
      seqNo:
        type: integer
        example: 1
        description: The sequence number of the inbound rule.
      description:
        type: string
        example: My Rule 1
        description: Description of the inboundRule.
        
        
  VirtualDeviceACLDetails:
    type: object
    properties:
      name:
        type: string
        example: Test Device
        description: Name of the virtual device associated with this template.
      uuid:
        type: string
        example: ce7ef79e-31e7-4769-be5b-e192496f48ab
        description: The unique Id of the virtual device associated with this template.
      interfaceType:
        type: string
        example: WAN
        description: Interface type, WAN or MGMT.
      aclStatus:
        type: string
        example: PROVISIONING
        description: Device ACL status

               
        
  VirtualDeviceRequest:
    type: object
    required:
    - deviceTypeCode
    - virtualDeviceName
    - licenseMode
    - metroCode
    - notifications
    - version
    - core
    - deviceManagementType
    - agreeOrderTerms
    properties:
      accountNumber:
        type: string
        example: 10478397
        description: Account number. Either an account number or accountReferenceId is required.
      accountReferenceId:
        type: string
        example: 209809
        description: AccountReferenceId. This is a temporary ID that can be used to create a device when the account status is still pending, not active. Either an account number or accountReferenceId is required.
      projectId:
        type: string
        example: XXXX-XXXX-XXXXX-XXXXXXXXXXXXXXXX
        description: Customer project Id. Check your projectId under Resource Management on Equinix Portal. You should have access to a project to see or create assets under it. Equinix will assign a projectId if you do not provide one. 
      version:
        type: string
        example: "16.09.03"
        description: Version.
      deviceTypeCode:
        type: string
        example: C8000V
        description: Virtual device type (device type code)
      hostNamePrefix:
        type: string
        example: mySR
        description: Host name prefix for identification. Only a-z, A-Z, 0-9, and hyphen(-) are allowed. It should start with a letter and end with a letter or digit. The length should be between 2-30 characters. Exceptions - FTDv 2-14 characters; Aruba 2-24 characters.
      agreeOrderTerms:
        type: boolean
        example: true
        description: To create a device, you must accept the order terms. Call Get Order Terms to review the details. If you are creating an Equinix-Configured device, read your vendor's terms by calling Get Vendor Terms. 
      licenseMode:
        type: string
        example: SUB
        description: License type. One of SUB (Subscription) or BYOL (Bring Your Own License)
      licenseCategory:
        type: string
        example: flex
        description: This field will be deprecated in the future. 
      licenseFileId:
        type: string
        example: d6e21e0c-86dd-11e8-adc0-fa7ae01bbebc
        description: For Juniper devices you need to provide a licenseFileId if you want to BYOL (Bring Your Own License). You get a licenseFileId when you upload a license file by calling license upload API (Upload a license file before creating a virtual device). For Cisco devices, you do not need to provide a licenseFileId at the time of device creation. Once the device is provisioned, you can get the deviceSerialNo by calling Get virtual device {uuid} API. With the deviceSerialNo you can generate a license file on Cisco site. Afterward, you can upload the license file by calling license upload API (Upload a license file after creating a virtual device).
      licenseToken:
        type: string
        example: V74191621
        description: In case you want to BYOL (Bring Your Own License) for a Palo Alto device, you must provide a license token. This field must have 8 alphanumeric characters.
      day0TextFileId:
        type: string
        example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
        description:   Some devices require a day0TextFileId. Upload your license file by calling Upload File API. You'll get a fileUuid in the response. You can enter the value in the day0TextFileId field of the create payload to create a virtual device. Check the payloads of individual devices (provided as Postman Scripts on our API doc site) for details.
      termlength:
        type: string
        description: Term length in months. 
      metroCode:
        type: string
        example: SV
        description: Metro code

      packageCode:
        type: string
        example: IPBASE
        description: Software package code
      sshUsers:
        type: array
        description: An array of sshUsernames and passwords
        items:
          $ref: '#/definitions/sshUsers'
      throughput:
        type: integer
        format: int32
        example: 1
        description: Numeric throughput. For Cisco8KV self-configured devices, you can choose either numeric or tier throughput options.
      throughputUnit:
        type: string
        example: Gbps
        description: Throughput unit. 
      tier:
        type: integer
        example: 1
        description: Tier throughput. Relevant for Cisco8KV devices. For Cisco8KV self-configured devices, you can choose either numeric or tier throughput options. Possible values - 0, 1, 2, 3. Default - 2
      virtualDeviceName:
        type: string
        example: Router1-c8000v
        description: Virtual device name for identification. This should be minimum 3 and maximum 50 characters long.
      orderingContact:
       type: string
       example: "subuser01"
      notifications:
        type: array
        items:
          type: string
        example: [test1@equinix.com, test2@equinix.com]
        description: Email addresses for notification. We need a minimum of 1 and no more than 5 email addresses.
      aclDetails:
        type: array
        description: An array of ACLs
        items:
          $ref: '#/definitions/ACLDetails'
      additionalBandwidth:
        type: integer
        format: int32
        example: 100
        description: Secondary additional bandwidth to be configured (in Mbps for
          HA). Default bandwidth provided is 15 Mbps.
      deviceManagementType:
        type: string
        example: EQUINIX-CONFIGURED
        description: Whether the device is SELF-CONFIGURED or EQUINIX-CONFIGURED
      core:
        type: integer
        format: int32
      interfaceCount:
        type: integer
        format: int32
      siteId:
        type: string
        example: "12345"
      systemIpAddress:
        type: string
        example: 192.168.2.5
      vendorConfig:
        type: object
        $ref: '#/definitions/VendorConfig'
      userPublicKey:
        type: object
        $ref: '#/definitions/UserPublicKeyRequest'
      ipType:
        type: string
        example: STATIC
        description: This field is deprecated. The ipType value always defaults to STATIC.
      sshInterfaceId:
        type: string
        example: "4"
        description: You may specify any available interface on the device as the sshInterfaceId. This field is only applicable to self-configured devices.
      smartLicenseUrl:
        type: string
        example: https://wwww.equinix.com
        description: License URL. This field is only relevant for Ciso ASAv devices.
      diverseFromDeviceUuid:
        type: string
        example: ac8a8497-1b6e-42d1-9075-acf23a62ed50
        description: Unique ID of an existing device. Use this field to let Equinix know if you want  your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
      clusterDetails:
        type: object
        $ref: '#/definitions/ClusterConfig'
        
      primaryDeviceUuid:
        type: string
        example: ac8a8497-1b6e-42d1-9075-acf23a62ed50
        description: This field is mandatory if you are using this API to add a secondary device to an existing primary device. 
      connectivity:
        type: string
        example: INTERNET-ACCESS
        description: Specifies the connectivity on the device. You can have INTERNET-ACCESS, PRIVATE, or INTERNET-ACCESS-WITH-PRVT-MGMT. Private devices don't have ACLs or bandwidth.
      channelPartner:
        type: string
        example: SDCI
        description: The name of the channel partner.
      cloudInitFileId:
        type: string
        example: 2d732d49-7a00-4839-aeca-8a2ff89da691
        description: The Id of a previously uploaded license or cloud_init file.
        
      purchaseOrderNumber:
        type: string
        example: 789065
        description: Purchase Order information will be included in your order confirmation email.
      orderReference:
        type: string
        example: 345678A
        description: Enter a short name/number to identify this order on the invoice.
        
      secondary:
        $ref: "#/definitions/VirtualDevicHARequest"
  VirtualDevicHARequest:
    type: object
    required:
    - metroCode
    - notifications
    - virtualDeviceName
    properties:
      accountNumber:
        type: string
        example: 10478398
      accountReferenceId:
        type: string
        example: 209805
      version:
        type: string
        example: "16.09.03"
        description: You can only choose a version for the secondary device when adding a secondary device to an existing device.
      additionalBandwidth:
        type: integer
        format: int32
        example: 100
        description: Secondary additional bandwidth to be configured (in Mbps for
          HA). Default bandwidth provided is 15 Mbps.
      licenseFileId:
        type: string
        example: d6e21e0c-86dd-11e8-adc0-fa7ae01bbebc
      licenseToken:
        type: string
        example: V74191621
      day0TextFileId:
        type: string
        example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
        description:   Some devices require a day0TextFileId. Upload your license file by calling Upload File API. You'll get a fileUuid in the response. You can enter the value in the day0TextFileId field of the create payload to create a virtual device. Check the payloads of individual devices (provided as Postman Scripts on our API doc site) for details.
      metroCode:
        type: string
        example: SV

      notifications:
        type: array
        items:
          type: string
          enum:
          - test1@example.com
          - test2@example.com
      aclDetails:
        type: array
        description: An array of ACLs
        items:
          $ref: '#/definitions/ACLDetails'
        
      sshUsers:
        type: array
        items:
          $ref: "#/definitions/SshUserOperationRequest"
      virtualDeviceName:
        type: string
        example: Router1-c8000v
        description: Virtual Device Name
      hostNamePrefix:
        type: string
        example: mySR
        description: Host name prefix for identification. Only a-z, A-Z, 0-9, and hyphen(-) are allowed. It should start with a letter and end with a letter or digit. The length should be between 2-30 characters. Exceptions - FTDv 2-14 characters; Aruba 2-24 characters.
      siteId:
        type: string
        example: "12345"
      systemIpAddress:
        type: string
        example: 192.168.2.5
      vendorConfig:
        type: object
        $ref: '#/definitions/VendorConfig'
      sshInterfaceId:
        type: string
        example: "4"
        description: You may specify any available interface on the device as the sshInterfaceId. This field is only applicable to self-configured devices. 
      smartLicenseUrl:
        type: string
        example: https://wwww.equinix.com
        description: License URL. This field is only relevant for Ciso ASAv devices.
      cloudInitFileId:
        type: string
        example: 2d732d49-7a00-4839-aeca-8a2ff89da691
        description: The Id of a previously uploaded license or cloud_init file.

  ClusterConfig:
    type: object
    properties:
      clusterName:
        type: string
        description: The cluster name.
        example: My Cluster
      clusterNodeDetails:
        type: object
        description: Cluster node details.
        $ref: '#/definitions/ClusterNodeDetails'

  ClusterNodeDetails:
    type: object
    properties:
      node0: 
        description: Node0 details.
        $ref: '#/definitions/Node0Details'
      node1:
        description: Node1 details.
        $ref: '#/definitions/Node1Details'

  Node0Details:
    type: object
    properties:
      licenseFileId:
        type: string
        description: License file id is required for Fortinet and Juniper clusters.
      licenseToken:
        type: string
        description: License token is required for Palo Alto clusters.
      vendorConfig:
        type: object
        $ref: '#/definitions/VendorConfigDetailsNode0'    
  Node1Details:
    type: object
    properties:
      licenseFileId:
        type: string
        description: License file id is required for Fortinet and Juniper clusters.
      licenseToken:
        type: string
        description: License token is required for Palo Alto clusters.
      vendorConfig:
        type: object      
        $ref: '#/definitions/VendorConfigDetailsNode1'    
        
  VendorConfigDetailsNode0:
    type: object
    properties:
      hostname:
        type: string
        example: myname1
        description: The host name. Only a-z, A-Z, 0-9, and hyphen(-) are allowed. It should start with a letter and end with a letter or digit. The length should be between 2-30 characters. Exceptions - FTDv 2-14; Aruba 2-24.
      activationKey:
        type: string
        example: GJUK-JM2X-59BJ-2TDJ
      controllerFqdn:
        type: string
        example: demo.velocloud.net
      rootPassword:
        type: string
        example: myPassw0rd!
      adminPassword:
        type: string
        example: ZQeIDI7sUd
        description: The administrative password of the device. You can use it to log in to the console. This field is not available for all device types.
      controller1:
        type: string
        example: 54.219.248.29
      panoramaIpAddress: 
        type: string
        example: 1.1.1.1
        description: IP address of the Panorama controller. Provide this value to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access
      panoramaAuthKey:
        type: string
        example: 123456
        description: This key supports secure onboarding of the Palo Alto firewall devices. Provide this value to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access.
      

        
  VendorConfigDetailsNode1:
    type: object
    properties:
      hostname:
        type: string
        example: myname1
        description: The host name. Only a-z, A-Z, 0-9, and hyphen(-) are allowed. It should start with a letter and end with a letter or digit. The length should be between 2-30 characters. Exceptions - FTDv 2-14; Aruba 2-24.
      rootPassword:
        type: string
        example: myPassw0rd!
      adminPassword:
        type: string
        example: ZQeIDI7sUd
        description: The administrative password of the device. You can use it to log in to the console. This field is not available for all device types.
      panoramaIpAddress: 
        type: string
        example: 1.1.1.1
        description: IP address of the Panorama controller. Provide this value to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access
      panoramaAuthKey:
        type: string
        example: 123456
        description: This key supports secure onboarding of the Palo Alto firewall devices. Provide this value to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access.
      
        
  aclObject:
    type: object
    properties:
      interfaceType: 
        type: string
        description: Type of interface, whether MGMT or WAN.
        example: WAN
      uuid:
        type: string
        description: The unique ID of template. 
        example: fb2e69bb-cbd7-40c4-bc01-8bcc5fa741c2
        
  SshUserOperationRequest:
    type: object
    required:
    - action
    properties:
      sshUserUuid:
        type: string
        example: 999a3aa2-c49a-dddd-98a6-007424e73777
        description: Required for DELETE operation.
      action:
        type: string
        example: CREATE
        description: SSH operation to be performed
        enum:
        - CREATE
        - DELETE
        - REUSE
      sshUsername:
        type: string
        example: cust0001_DC
        description: SSH User name
      sshPassword:
        type: string
        example: projPass
        description: SSH Password
  FieldErrorResponse:
    type: object
    properties:
      errorCode:
        type: string
      errorMessage:
        type: string
      moreInfo:
        type: string
      property:
        type: string
      status:
        type: string
  Charges:
    type: object
    properties:
      description:
        type: string
        description: The description of the charge, whether it is for the virtual device, the device license, or the additional bandwidth.
        example: VIRTUAL_DEVICE
      monthlyRecurringCharges:
        type: string
        description: The monthly charges.
        example: 200
  ImpactedServices:
    type: object
    properties:
      serviceName:
        type: string
        description: The name of the impacted service.
        example: Device
      impact:
        type: string
        description: The type of impact, whether the impacted service is down or delayed.
        example: Device
      serviceStartTime:
       type: string
       description: Start of the downtime of the service.
       example: "2019-08-27T17:30:00Z"
      serviceEndTime:
       type: string
       description: End of the downtime of the service.
       example: "2019-08-27T17:30:00Z"     
      errorMessage:
       type: string
       description: Downtime message of the service.
       example: Create device APIs are currently down.
  Metro:
    type: object
    properties:
      metroCode:
        description: Metro code
        type: string
        example: DC
      metroDescription:
        description: Metro description
        type: string
        example: Ashburn
      region:
        description: A region have several metros.
        type: string
        example: AMER
      clusterSupported:
        type: boolean
        description: Whether this metro supports cluster devices
        example: false
        
  PageResponse:
    type: object
    properties:
      data:
        type: array
        items:
          type: object
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
        
  PageResponse-PublicKeys:
    type: object
    properties:
        uuid:
          type: string
          example: 877a3aa2-c49a-4af1-98a6-007424e737ae
          description: The unique Id of the keyName and keyValue combination
        keyName:
          type: string
          example: myKeyName
          description: Key name
        keyValue:
          type: string
          example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC5kHcagDZ7utPan4DHWUvoJxwz/DISRFwZdpMhslhZRI+6dGOC8mJn42SlSUAUtkt8Qyl4HipPK7Xh6oGj70Iba1a9pDcURYTYcqWFBEhcdDsMnH1CICmvVdsILehFtiS3X0J1JhwmWQI/7ll3QOk8fLgWCz3idlYJqtMs8Gz/6Q== noname
          description: Key value
        keyType:
          type: string
          example: RSA
          description: Type of key, whether RSA or DSA
  PublicKeyRequest:
    type: object
    required: 
    - keyName
    - keyValue
    properties:
        keyName:
          type: string
          example: myKeyName
          description: Key name
        keyValue:
          type: string
          example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC5kHcagDZ7utPan4DHWUvoJxwz/DISRFwZdpMhslhZRI+6dGOC8mJn42SlSUAUtkt8Qyl4HipPK7Xh6oGj70Iba1a9pDcURYTYcqWFBEhcdDsMnH1CICmvVdsILehFtiS3X0J1JhwmWQI/7ll3QOk8fLgWCz3idlYJqtMs8Gz/6Q== noname
          description: Key value   
        keyType:
          type: string
          example: RSA
          description: Key type, whether RSA or DSA. Default is RSA.  
      
  VirtualDeviceDetailsResponse:
    type: object
    properties:
      accountName:
        type: string
        example: ABC INC
      accountNumber:
        type: string
        example: '133911'
      createdBy:
        type: string
        example: cust0001
      createdDate:
        type: string
        example: '2018-01-30T10:30:31.387Z'
      deletedBy:
        type: string
        example: cust0001
      deletedDate:
        type: string
        example: '2018-01-30T10:30:31.387Z'
      deviceSerialNo:
        type: string
        example: '53791666484'
      deviceTypeCategory:
        type: string
        example: ROUTER
      diverseFromDeviceName:
        type: string
        example: My-Other-Device
        description: The name of a device that is in a location different from this device.
      diverseFromDeviceUuid:
        type: string
        example: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
        description: The unique ID of a device that is in a location different from this device.
      deviceTypeCode:
        type: string
        example: C8000V
      deviceTypeName:
        type: string
        example: C8000v router
      expiry:
        type: string
        example: 2019-02-07 00:00:00
      region:
        type: string
        example: AMER
      deviceTypeVendor:
        type: string
        example: Cisco
      hostName:
        type: string
        example: VR-SV-C8000V-cust0001-1
      uuid:
        type: string
        example: 877a3aa2-c49a-4af1-98a6-007424e737ae
      lastUpdatedBy:
        type: string
        example: cust0002
      lastUpdatedDate:
        type: string
        example: '2018-01-30T10:30:31.387Z'
      licenseFileId:
        type: string
        example: 877a3aa2-c49a-4af1-98a6-007424e737ae
      licenseName:
        type: string
        example: Bring your own license
      licenseStatus:
        type: string
        example: REGISTERED
      licenseType:
        type: string
        example: BYOL
      metroCode:
        type: string
        example: SV
      metroName:
        type: string
        example: Silicon Valley
      name:
        type: string
        example: AWS-Azure-Router-c8000v
      notifications:
        type: array
        items:
          type: string
          example : "test@equinix.com"
      packageCode:
        type: string
        example: SEC
      packageName:
        type: string
        example: Security
      version:
        type: string
        example: 16.09.02
      purchaseOrderNumber:
        type: string
        example: PO1223
      redundancyType:
        type: string
        example: PRIMARY
      redundantUuid:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa67xx
      connectivity:
        type: string
        example: INTERNET-ACCESS
      sshIpAddress:
        type: string
        example: 10.195.11.23
      sshIpFqdn:
        type: string
        example: test-device-168-201-97-149.eis.lab.equinix.com
      sshIpFqdnStatus:
        type: string
        example: ASSIGNED
      status:
        type: string
        example: PROVISIONED
      throughput:
        type: integer
        format: int32
        example: 500
      throughputUnit:
        type: string
        example: Mbps
      core:
        type: object
        $ref: '#/definitions/CoresDisplayConfig'
      pricingDetails:
        type: object
        $ref: '#/definitions/PricingSiebelConfig'
      interfaceCount:
        type: integer
        example: 10
      deviceManagementType:
        type: string
        example: EQUINIX-CONFIGURED
      plane:
        type: string
        example: PRIMARY
      userPublicKey:
        type: object
        $ref: '#/definitions/UserPublicKeyConfig'
      managementIp:
        type: string
        example: 10.195.237.228/26
      managementGatewayIp:
        type: string
        example: 10.195.237.254
      publicIp:
        type: string
        example: 149.97.198.95/31
      publicGatewayIp:
        type: string
        example: 149.97.198.94
      primaryDnsName:
        type: string
        example: 4.0.0.53
      secondaryDnsName:
        type: string
        example: 129.250.35.250
      termLength:
        type: string
        example: 12
        description: Term length in months. 
      newTermLength:
        type: string
        example: 24
        description: The term length effective upon the expiration of the current term. 
      additionalBandwidth:
        type: string
        example: 200
      siteId:
        type: string
        example: "12345"
      systemIpAddress:
        type: string
        example: 192.168.2.5
      vendorConfig:
        type: object
        $ref: '#/definitions/VendorConfig'
      interfaces:
        type: array
        items:
          $ref: '#/definitions/InterfaceBasicInfoResponse'
      asn:
        type: number
        example: 1029
        description: The ASN number. 
      channelPartner:
        type: string
        example: SDCI
        description: The name of the channel partner.
        
  UserPublicKeyConfig:
    type: object
    description: An object with public key details.
    properties:
      username:
        type: string
        description: Username.
        example: test-user-1
      publicKeyName:
        type: string
        description: Key name.
        example: test-pk-2
      publicKey:
        type: string
        description: The public key.
        example: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU\nGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3\nPbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA\nt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88Xypsamplesample
  UserPublicKeyRequest:
    type: object
    description: An object with public key details.
    properties:
      username:
        type: string
        description: Username.
        example: test-user-1
      keyName:
        type: string
        description: Key name. This field may be required for some vendors. The keyName must be an existing keyName associated with an existing keyValue. To set up a new keyName and keyValue pair, call Create Public Key.
        example: test-pk-2

        
  PricingSiebelConfig:
    type: object
    description: An object that has the pricing and other details of a Siebel order.
    properties:
      termLength: 
        type: string
        description: The termlength of the Siebel order.
        example: 36
      orderNumber:
        type: string
        description: The order number.
        example: 1-198735018693
      core:
        type: integer
        description: The core selection on Siebel.
        example: 4
      throughput:
        type: string
        description: Throughput.
        example: 1
      ThroughputUnit:
        type: string
        description: The throughput unit.
        example: Gbps
      packageCode: 
        type: string
        description: The software package code.
        example: AX
      additionalBandwidth:
        type: string
        description: The additional bandwidth selection on Siebel.
        example: 100
      primary: 
        type: object
        description: An object that has the charges associated with the primary device.
        properties:
          currency:
            type: string
            description: The currency of the charges.
            example: USD
          charges:
            type: array
            items:
              $ref: '#/definitions/Charges'
      secondary: 
        type: object
        description: An object that has the charges associated with the secondary device.
        properties:
          currency:
            type: string
            description: The currency of the charges.
            example: USD
          charges:
            type: array
            items:
              $ref: '#/definitions/Charges'
  CoresDisplayConfig:
    type: object
    properties:
      core:
        type: integer
        example: 4
        description: The number of cores.
      memory:
        type: integer
        example: 4
        description: The amount of memory.
      unit:
        type: string
        example: GB
        description: The unit of memory.
      tier:
        type: integer
        example: 2
        description: Tier is only relevant for Cisco8000V devices.
  InterfaceBasicInfoResponse:
    type: object
    properties:
      id:
        type: number
        example: 1
      name:
        type: string
        example: ethernet1
      status:
        type: string
        example: ASSIGNED
      operationStatus:
        type: string
        example: DOWN
      macAddress:
        type: string
        example: fa16.3e1c.a8d8
      ipAddress:
        type: string
        example: 2.2.2.2
      assignedType:
        type: string
        example: Equinix Managed
      type:
        type: string
        example: DATA
        description: The type of interface.

  AllowedInterfaceResponse:
    type: object
    properties:
      interfaceProfiles:
        type: array
        items:
          $ref: '#/definitions/AllowedInterfaceProfiles'

  AllowedInterfaceProfiles:
    type: object
    properties:
      count:
        type: number
        example: 10
        description: Allowed interface count

      interfaces:
        type: array
        items:
          $ref: '#/definitions/InterfaceDetails'       
      default:
        type: boolean
        example: true
        description: Whether this will be the default interface count if you do not provide a number.
  InterfaceDetails:
    type: object
    properties:
      name:
        type: string
        example: ethernet1/1
        description: Name of the interface
      description:
        type: string
        example: DATA Interface
        description: Description of the interface
      interfaceId:
        type: string
        example: 2
        description: Interface Id.
      status:
        type: string
        example: AVAILABLE
        description: Status of the interface.


  PageResponseDto-MetroResponse:
    type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/definitions/MetroResponse'
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"

  PageResponseDto-MetroAccountResponse:
    type: object
    properties:
      accountCreateUrl:
        type: string
        description: accountCreateUrl
      accounts:
        type: array
        items:
          $ref: '#/definitions/MetroAccountResponse'
      errorMessage:
        type: string
        description: error Message
      errorCode:
        type: string
        description: error Code
  MetroAccountResponse:
    type: object
    properties:
      accountName:
        type: string
        description: account Name
        example: nfv1
      accountNumber:
        type: integer
        description: account number
        example: 2252619
      accountUcmId:
        type: string
        description: account UcmId
        example: 92D27009-EA33-4b60-B4FB-D3C4ED589649
      accountStatus:
        type: string
        description: account status
        example: Active
      metros:
        type: array
        items: 
          type: string
          example: DA
        description: An array of metros where the account is valid
      creditHold:
        type: boolean
        example: false
        description: Whether the account has a credit hold. You cannot use an account on credit hold to create a device. 
      referenceId:
        type: string
        description: referenceId
        example: ""
  PageResponseDto:
    type: object
    properties:
      content:
        type: array
        items:
          type: object
      data:
        type: array
        items:
          type: object
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
    
  DeviceACLPageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/DeviceACLTemplatesResponse'

  DeviceRebootPageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/DeviceRebootResponse'

          
  DeviceRebootResponse:
    type: object
    properties:
      deviceUUID:
        type: string
        description: Unique Id of the device.
        example: be7ef79e-31e7-4769-be5b-e192496f48aa
      status: 
        type: string
        description: The status of the reboot.
        example: SUCCESS
      requestedBy:
        type: string
        example: nfvsit01
        description: Requested by
      requestedDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Requested date
      completiondDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Requested date
        
  DeviceUpgradePageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/DeviceUpgradeDetailsResponse'
  DeviceUpgradeDetailsResponse:
    type: object
    properties:
      uuid:
        type: string
        description: Unique Id of the upgrade.
        example: be7ef79e-31e7-4769-be5b-e192496f48aa
      virtualDeviceUuid:
        type: string
        description: Unique Id of the device.
        example: 8ed6ffcb-cef5-4801-83a3-2aa2b6c682f0
      status: 
        type: string
        description: The status of the upgrade. REQUEST_ACCEPTED, IN_PROGRESS, SUCCESS, FAILED, CANCELLED
        example: SUCCESS
      requestedDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Requested date
      completiondDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Requested date
      requestedBy:
        type: string
        example: eqxnfvuser1
        description: Requested by.

  UpgradeCoreRequestDetails:
    type: object
    properties:
      core:
        type: number
        example: 8
        description: Core requested for the device
      upgradePeerDevice:
        type: boolean
        example: true
        description: Whether the peer device should be upgraded or not.
      


  DeviceACLTemplatesResponse:
    type: object
    properties:
      name:
        type: string
        description: The name of the ACL template.
        example: New template
      uuid:
        type: string
        description: The unique Id of the ACL template.
        example: be7ef79e-31e7-4769-be5b-e192496f48aa
      description: 
        type: string
        description: The description of the ACL template.
        example: My description
      inboundRules:
        type: array
        description: An array of inbound rules
        items:
          $ref: '#/definitions/InboundRules'

      createdBy:
        type: string
        example: nfvsit01
        description: Created by
      createdDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Created date
  InitialDeviceACLResponse:
    type: object
    properties:
        aclTemplate:
          type: object
          "$ref": "#/definitions/DeviceACLDetailsResponse"
        mgmtAclTemplate:
          type: object
          "$ref": "#/definitions/DeviceACLDetailsResponse"
        
  DeviceACLDetailsResponse:
    type: object
    properties:
      name:
        type: string
        description: The name of the ACL template.
        example: New template
      uuid:
        type: string
        description: The unique Id of the ACL template.
        example: be7ef79e-31e7-4769-be5b-e192496f48aa
      description: 
        type: string
        description: The description of the ACL template.
        example: My description
      inboundRules:
        type: array
        description: An array of inbound rules
        items:
          $ref: '#/definitions/InboundRules'

      createdBy:
        type: string
        example: nfvsit01
        description: Created by
      createdDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Created date
      status:
        type: string
        example: DEVICE_NOT_READY
        description: The status of the ACL template on the device. Possible values are PROVISIONED, DEPROVISIONED, DEVICE_NOT_READY, FAILED, NOT_APPLIED, PROVISIONING.
        
  ACLTemplateDetailsResponse:
    type: object
    properties:
      name:
        type: string
        description: The name of the ACL template.
        example: New template
      uuid:
        type: string
        description: The unique Id of the ACL template.
        example: be7ef79e-31e7-4769-be5b-e192496f48aa
      description: 
        type: string
        description: The description of the ACL template.
        example: My description
      inboundRules:
        type: array
        description: An array of inbound rules
        items:
          $ref: '#/definitions/InboundRules'
      virtualDeviceDetails:
        type: array
        description: The array of devices associated with this ACL template
        items:
          $ref: '#/definitions/VirtualDeviceACLDetails'     

      createdBy:
        type: string
        example: nfvsit01
        description: Created by
      createdDate:
        type: string
        example: 2020/10/03T19:41:17.976Z
        description: Created date
  VirtualDevicePageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/VirtualDeviceDetailsResponse'

  LinksPageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/DeviceLinkGroupDto'
          
  PaginationResponseDto:
    type: object
    properties:
      offset:
        type: integer
        example: 0
        description: It is the starting point of the collection returned fromt the server
      limit:
        type: integer
        description: The page size
        example: 20
      total:
        type: integer
        description: The total number of results
        example: 1
  SshUserPageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/SshUserInfoVerbose'
  DeviceBackupPageResponse:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/DeviceBackupInfoVerbose'
       
  PriceResponse:
    type: object
    properties:
      billingCommencementDate:
       type: string
      billingEnabled:
       type: boolean
      charges:
        type: array
        description: An array of the monthly recurring charges.
        items:
          $ref: '#/definitions/Charges'
      currency:
        type: string
  CompositePriceResponse:
    type: object
    properties:
      primary:
        $ref: "#/definitions/PriceResponse"
      secondary:
        $ref: "#/definitions/PriceResponse"
      termLength:
        type: string
        example: '24'
  DowntimeNotification:
    type: object
    properties:
      notificationType:
       type: string
       description: Type of notification, whether planned or unplanned.
       example: unplanned_downtime
      startTime:
       type: string
       description: Start of the downtime.
       example: "2019-08-27T17:30:00Z"
      endTime:
       type: string
       description: End of the downtime.
       example: "2019-08-27T17:30:00Z"     
      impactedServices:
       type: array
       description: An array of services impacted by the downtime.
       items:
        $ref: '#/definitions/ImpactedServices'
      additionalMessage:
       type: string
       description: Any additional messages.
       example: Network Edge APIs are currently unavailable. Please try again later.

  LicenseUploadResponse:
    type: object
    properties:
      fileId:
        type: string
  FileUploadResponse:
    type: object
    properties:
      fileUuid:
        type: string
  LicenseUpdateRequest:
    type: object
    properties:
      token:
        type: string
        example: A1025025
  AdditionalBandwidthRequest:
    type: object
    properties:
      additionalBandwidth:
        type: integer
        example: 100
  MetroResponse:
    type: object
    properties:
      metroCode:
        type: string
        description: Metro code
        example: SV
      metroDescription:
        type: string
        description: Metro description
        example: Silicon Valley
      region:
        type: string
        description: Region within which the metro is located
        example: AMER
      clusterSupported:
        type: boolean
        description: Whether this metro supports cluster devices
        example: false
        
  PostConnectionRequest:
    type: object
    properties:
      primaryName:
        type: string
        example: v3-api-test-pri
      virtualDeviceUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      profileUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      authorizationKey:
        type: string
        example: 444111000222
      speed:
        type: integer
        example: 50
      speedUnit:
        type: string
        example: MB
      notifications:
        type: array
        items:
          type: string
          example: sandboxuser@example-company.com
      purchaseOrderNumber:
        type: string
        example: '312456323'
      sellerMetroCode:
        type: string
        example: SV
      interfaceId:
        type: integer
        example: 5
      secondaryName:
        type: string
        example: v3-api-test-sec1
      namedTag:
        type: string
        example: Private
      secondaryVirtualDeviceUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      secondaryProfileUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      secondaryAuthorizationKey:
        type: string
        example: 444111000222
      secondarySellerMetroCode:
        type: string
        example: SV
      secondarySpeed:
        type: integer
        example: 50
      secondarySpeedUnit:
        type: string
        example: MB
      secondaryNotifications:
        type: array
        items:
          type: string
          example: sandboxuser@example-company.com
      secondaryInterfaceId:
        type: integer
        example: 6
      primaryZSideVlanCTag:
        type: integer
        example: 101
      secondaryZSideVlanCTag:
        type: integer
        example: 102
      primaryZSidePortUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      primaryZSideVlanSTag:
        type: integer
        example: 301
      secondaryZSidePortUUID:
        type: string
        example: xxxxx192-xx70-xxxx-xx04-xxxxxxxa37xx
      secondaryZSideVlanSTag:
        type: integer
        example: 302
  PostConnectionResponse:
    type: object
    properties:
      message:
        type: string
        example: Connection created successfully
      primaryConnectionId:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      secondaryConnectionId:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      status:
        type: string
        example: SUCCESS
  BgpConnectionInfo:
    type: object
    properties:
      bgpStatus:
        type: string
      isPrimary:
        type: boolean
      metro:
        type: string
      name:
        type: string
      providerStatus:
        type: string
      redundantConnection:
        $ref: '#/definitions/BgpConnectionInfo'
      redundantUUID:
        type: string
      sellerOrganizationName:
        type: string
      status:
        type: string
      uuid:
        type: string
  BgpConfigAddRequest:
    type: object
    properties:
      authenticationKey:
        description: Provide a key value that you can use later to authenticate.
        type: string
        example: pass123
      connectionUuid:
        type: string
        example: f79eead8-b837-41d3-9095-9b15c2c4996d
        description: The unique Id of a connection between the virtual device and the cloud service provider
      localAsn:
        type: integer
        format: int64
        example: 10012
        description: Local ASN (autonomous system network). This is the ASN of the virtual device.
      localIpAddress:
        type: string
        example: 100.210.1.221/30
        description: Local IP Address. This is the IP address of the virtual device in CIDR format.
      remoteAsn:
        type: integer
        format: int64
        example: 10013
        description: Remote ASN (autonomous system network). This is the ASN of the cloud service provider.
      remoteIpAddress:
        type: string
        example: 100.210.1.31
        description: Remote IP Address. This is the IP address of the cloud service provider.
  BgpInfo:
    type: object
    properties:
      authenticationKey:
        type: string
      connectionUuid:
        type: string
      createdBy:
        type: string
      createdByEmail:
        type: string
      createdByFullName:
        type: string
      createdDate:
        type: string
      deletedBy:
        type: string
      deletedByEmail:
        type: string
      deletedByFullName:
        type: string
      deletedDate:
        type: string
      lastUpdatedBy:
        type: string
      lastUpdatedByEmail:
        type: string
      lastUpdatedByFullName:
        type: string
      lastUpdatedDate:
        type: string
      localAsn:
        type: integer
        format: int64
      localIpAddress:
        type: string
      provisioningStatus:
        type: string
      remoteAsn:
        type: integer
        format: int64
      remoteIpAddress:
        type: string
      state:
        type: string
      uuid:
        type: string
      virtualDeviceUuid:
        type: string



  
  BgpAsyncResponse:
    type: object
    properties:
      uuid:
        type: string
  Vpn:
    type: object
    required:
    - password
    - peerIp
    - peerSharedKey
    - remoteAsn
    - remoteIpAddress
    - siteName
    - tunnelIp
    - virtualDeviceUuid
    properties:
      siteName:
        type: string
        example: Chicago
      virtualDeviceUuid:
        type: string
        example: f79eead8-b837-41d3-9095-9b15c2c4996d
        description: The unique Id of the primary device.
      configName:
        type: string
        example: Traffic from AWS cloud
      peerIp:
        type: string
        example: 110.11.12.222
      peerSharedKey:
        type: string
        example: 5bb2424e888bd
      remoteAsn:
        type: integer
        format: int64
        example: 65413
        description: Remote Customer ASN - Customer side
      remoteIpAddress:
        type: string
        example: 100.210.1.31
        description: Remote Customer IP Address - Customer side
      password:
        type: string
        example: pass123
        description: BGP Password
      localAsn:
        type: integer
        format: int64
        example: 65414
        description: Local ASN - Equinix side
      tunnelIp:
        type: string
        example: 192.168.7.2/30
        description: Local Tunnel IP Address in CIDR format
      secondary:
        description: Secondary VPN details. Required if VPN is for a HA enabled device.
        $ref: "#/definitions/VpnRequest"
  VpnRequest:
    type: object
    required:
    - password
    - peerIp
    - peerSharedKey
    - remoteAsn
    - remoteIpAddress
    - tunnelIp
    properties:
      configName:
        type: string
        example: Traffic from AWS cloud
      peerIp:
        type: string
        example: 110.11.12.222
      peerSharedKey:
        type: string
        example: 5bb2424e888bd
      remoteAsn:
        type: integer
        format: int64
        example: 65413
        description: Remote Customer ASN - Customer side
      remoteIpAddress:
        type: string
        example: 100.210.1.31
        description: Remote Customer IP Address - Customer side
      password:
        type: string
        example: pass123
        description: BGP Password
      localAsn:
        type: integer
        format: int64
        example: 65414
        description: Local ASN - Equinix side
      tunnelIp:
        type: string
        example: 192.168.7.2/30
        description: Local Tunnel IP Address in CIDR format    
  VpnResponseDto:
    type: object
    properties:
      pagination:
        "$ref": "#/definitions/PaginationResponseDto"
      data:
        type: array
        items:
          $ref: '#/definitions/VpnResponse'
          
  VpnResponse:
    type: object
    required:
    - password
    - peerIp
    - peerSharedKey
    - remoteAsn
    - remoteIpAddress
    - siteName
    - tunnelIp
    - virtualDeviceUuid
    properties:
      siteName:
        type: string
        example: Chicago
      uuid:
        type: string
        example: 877a3aa2-c49a-4af1-98a6-007424e737ae
      virtualDeviceUuid:
        type: string
        example: f79eead8-b837-41d3-9095-9b15c2c4996d
      configName:
        type: string
        example: Traffic from AWS cloud
      status:
        type: string
        example: PROVISIONED
      peerIp:
        type: string
        example: 110.11.12.222
      peerSharedKey:
        type: string
        example: 5bb2424e888bd
      remoteAsn:
        type: integer
        format: int64
        example: 65413
        description: Remote Customer ASN - Customer side
      remoteIpAddress:
        type: string
        example: 100.210.1.31
        description: Remote Customer IP Address - Customer side
      password:
        type: string
        example: pass123
        description: BGP Password
      localAsn:
        type: integer
        format: int64
        example: 65414
        description: Local ASN - Equinix side
      tunnelIp:
        type: string
        example: 192.168.7.2/30
        description: Local Tunnel IP Address in CIDR format
      bgpState:
        type: string
        example: ESTABLISHED
      inboundBytes:
        type: string
        example: '8780'
      inboundPackets:
        type: string
        example: '8780'
      outboundBytes:
        type: string
        example: '8765'
      outboundPackets:
        type: string
        example: '8765'
      tunnelStatus:
        type: string
        example: UP
      custOrgId:
        type: integer
        format: int64
        example: 65555
      createdDate:
        type: string
        example: '2018-05-18 06:34:26'
      createdByFirstName:
        type: string
        example: John
      createdByLastName:
        type: string
        example: Smith
      createdByEmail:
        type: string
        example: alpha@beta.com
      createdByUserKey:
        type: integer
        format: int64
        example: 123
      createdByAccountUcmId:
        type: integer
        format: int64
        example: 456
      createdByUserName:
        type: string
        example: jsmith
      createdByCustOrgId:
        type: integer
        format: int64
        example: 7863
      createdByCustOrgName:
        type: string
        example: My Awesome Org
      createdByUserStatus:
        type: string
        example: ACTIVATED
      createdByCompanyName:
        type: string
        example: My Awesome Company
      lastUpdatedDate:
        type: string
        example: '2018-07-21 05:20:20'
      updatedByFirstName:
        type: string
        example: John
      updatedByLastName:
        type: string
        example: Smith
      updatedByEmail:
        type: string
        example: alpha@beta.com
      updatedByUserKey:
        type: integer
        format: int64
        example: 123
      updatedByAccountUcmId:
        type: integer
        format: int64
        example: 456
      updatedByUserName:
        type: string
        example: jsmith
      updatedByCustOrgId:
        type: integer
        format: int64
        example: 7863
      updatedByCustOrgName:
        type: string
        example: My Awesome Org
      updatedByUserStatus:
        type: string
        example: ACTIVATED
      updatedByCompanyName:
        type: string
        example: My Awesome Company
  BgpUpdateRequest:
    type: object
    properties:
      authenticationKey:
        type: string
        example: pass123
        description: Authentication Key
      localAsn:
        type: integer
        format: int64
        example: 10012
        description: Local ASN
      localIpAddress:
        type: string
        example: 100.210.1.221/30
        description: Local IP Address with subnet
      remoteAsn:
        type: integer
        format: int64
        example: 10013
        description: Remote ASN
      remoteIpAddress:
        type: string
        example: 100.210.1.31
        description: Remote IP Address
  ErrorResponse:
    type: object
    properties:
      errorCode:
        type: string
        example: ErrorCode
      errorMessage:
        type: string
        example: Error message
      moreInfo:
        type: string
        example: More Info
      property:
        type: string
        example: Property
  ErrorResponseArray:
    type: array
    items:
      $ref: '#/definitions/ErrorResponse'
  GetValidateAuthKeyRes:
    type: object
    properties:
      message:
        type: string
        example: Authorization key provided is valid
      status:
        type: string
        example: VALID
      primary:
        $ref: '#/definitions/GetValidateAuthkeyresPrimary'
      secondary:
        $ref: '#/definitions/GetValidateAuthkeyresSecondary'
  GetValidateAuthkeyresPrimary:
    type: object
    properties:
      bandwidth:
        type: string
        example: 50MB
  GetValidateAuthkeyresSecondary:
    type: object
    properties:
      bandwidth:
        type: string
        example: 50MB
  GetServProfServicesResp:
    type: object
    properties:
      isLastPage:
        type: boolean
        example: true
      totalCount:
        type: integer
        example: 1
      isFirstPage:
        type: boolean
        example: true
      pageSize:
        type: integer
        example: 1000
      pageNumber:
        type: integer
        example: 1
      content:
        type: array
        items:
          $ref: '#/definitions/GetServProfServicesRespContent'
  GETConnectionsPageResponse:
    type: object
    properties:
      isLastPage:
        type: boolean
        example: true
      totalCount:
        type: integer
        example: 1
      isFirstPage:
        type: boolean
        example: true
      pageSize:
        type: integer
        example: 1000
      pageNumber:
        type: integer
        example: 1
      content:
        type: array
        items:
          $ref: '#/definitions/GETConnectionByUuidResponse'
  GetServProfServicesRespContent:
    type: object
    properties:
      uuid:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      name:
        type: string
        example: test
      authKeyLabel:
        type: string
        example: Authorization Key
      connectionNameLabel:
        type: string
        example: Connection Name
      requiredRedundancy:
        type: boolean
        example: false
      allowCustomSpeed:
        type: boolean
        example: false
      speedBands:
        type: array
        items:
          $ref: '#/definitions/SpeedBand'
      metros:
        $ref: '#/definitions/GetServProfServicesRespContentMetros'
      createdDate:
        type: string
        example: '2018-03-22T04:34:48.231Z'
      createdBy:
        type: string
        example: Sandbox User
      lastUpdatedDate:
        type: string
        example: '2018-04-03T00:30:57.055Z'
      lastUpdatedBy:
        type: string
        example: Sandbox User
      vlanSameAsPrimary:
        type: boolean
        example: false
      tagType:
        type: string
        example: CTAGED
      ctagLabel:
        type: string
        example: Seller-Side C-Tag
      apiAvailable:
        type: boolean
        example: false
      selfProfile:
        type: boolean
        example: false
      profileEncapsulation:
        type: string
        example: Dot1q
      authorizationKey:
        type: string
        example: '535235'
      organizationName:
        type: string
        example: Equinix-ADMIN
      private:
        type: boolean
        example: false
      features:
        $ref: '#/definitions/GetServProfServicesRespContentfeatures'
  SpeedBand:
    type: object
    properties:
      speed:
        type: number
        format: double
        example: 50
      unit:
        type: string
        example: MB
  GetServProfServicesRespContentMetros:
    type: object
    properties:
      code:
        type: string
        example: SV
      name:
        type: string
        example: Silicon Valley
      ibxs:
        type: array
        items:
          type: string
          example: SV1
      inTrail:
        type: boolean
        example: false
      displayName:
        type: string
        example: Silicon Valley
  GetServProfServicesRespContentfeatures:
    type: object
    properties:
      cloudReach:
        type: boolean
        example: true
      testProfile:
        type: boolean
        example: false
  PatchRequest:
    type: object
    properties:
      accessKey:
        type: string
        example: AKIAIXKQARIFBC3QJKYQ
      secretKey:
        type: string
        example: ARIFW1lWbqNSOqSkCAOXAhep22UGyLJvkDBAIG
  DeleteConnectionResponse:
    type: object
    properties:
      message:
        type: string
        example: Message
      primaryConnectionId:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
  GETConnectionByUuidResponse:
    type: object
    properties:
      buyerOrganizationName:
        type: string
        example: Forsythe Solutions Group, Inc.
      uuid:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      name:
        type: string
        example: Test-123
      vlanSTag:
        type: integer
        format: int32
        example: 1015
      portUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      portName:
        type: string
        example: TEST-CH2-CX-SEC-01
      asideEncapsulation:
        type: string
        example: dot1q
      metroCode:
        type: string
        example: CH
      metroDescription:
        type: string
        example: Chicago
      providerStatus:
        type: string
        example: PROVISIONED
      status:
        type: string
        example: PROVISIONED
      billingTier:
        type: string
        example: Up to 500MB
      authorizationKey:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      speed:
        type: integer
        format: int32
        example: 500
      speedUnit:
        type: string
        example: MB
      redundancyType:
        type: string
        example: SECONDARY
      redundancyGroup:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      sellerMetroCode:
        type: string
        example: CH
      sellerMetroDescription:
        type: string
        example: Chicago
      sellerServiceName:
        type: string
        example: XYZ Cloud Service
      sellerServiceUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      sellerOrganizationName:
        type: string
        example: EQUINIX-CLOUD-EXCHANGE
      notifications:
        type: array
        items:
          type: string
          example: sandboxuser@example-company.com, sandboxuser@example-company.com
      purchaseOrderNumber:
        type: string
        example: O-1234567890
      namedTag:
        type: string
        example: Private
      createdDate:
        type: string
        example: '2017-09-26T22:46:24.312Z'
      createdBy:
        type: string
        example: sandboxuser@example-company.com
      createdByFullName:
        type: string
        example: Sandbox User
      createdByEmail:
        type: string
        example: sandboxuser@example-company.com
      lastUpdatedBy:
        type: string
        example: sandboxuser@example-company.com
      lastUpdatedDate:
        type: string
        example: '2017-09-26T23:01:46Z'
      lastUpdatedByFullName:
        type: string
        example: Sandbox User
      lastUpdatedByEmail:
        type: string
        example: sandboxuser@example-company.com
      zSidePortName:
        type: string
        example: TEST-CHG-06GMR-Tes-2-TES-C
      zSidePortUUID:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
      zSideVlanCTag:
        type: integer
        format: int32
        example: 515
      zSideVlanSTag:
        type: integer
        format: int32
        example: 2
      remote:
        type: boolean
        example: false
      private:
        type: boolean
        example: false,
      self:
        type: boolean
        example: false,
      redundantUuid:
        type: string
        example: xxxxx191-xx70-xxxx-xx04-xxxxxxxa37xx
  OrderTermsResponse:
    type: object
    properties:
      terms:
        type: string
        example: By clicking "Accept" you are agreeing to the terms and conditions of this Order on behalf of your Company. You are acknowledging that you have the full authority on behalf of your Company to enter into this online Order "Order" as governed by and incorporated by reference into the applicable Master Country Agreement, Interconnection Terms and Conditions, or other similar agreement agreed to between the Parties "Agreement." Unless otherwise defined in this Order or if the context requires otherwise, all capitalized terms used in this Order shall have the meanings ascribed to them in the Agreement.‘Product(s)’ as used in this Order means all the products under this Order, including Licensed Space and/or Services (if any). The Initial Term is the term stated above, which commence on the date the Product(s) are delivered (“Effective Date”). After the Initial Term, the term will automatically renew for a period equal to the Initial Term unless either Party terminates this Order by providing written non-renewal notice 90 days prior to the end of the then-current term to the other Party in which event this Order will terminate at the end of the then-current term. For avoidance of doubt, the notice period for an Initial Term of one month is 30 days, rather than 90 days. This Order incorporates the Product Provider EULA provided by Equinix to the Customer in Attachment A of this Order and the Product Policies, which are attached as Exhibits to the Customer’s Interconnection Terms and Conditions. All Product(s) selected as part of this Order are subject to availability. Equinix, in its sole discretion, reserves the right to reject any handwritten or typed modification to this Agreement or any Order which is not mutually agreed to in writing. For purposes of this Order, the Parties hereby agree that the following ‘Price Increase Terms’ grid is not applicable to the Network Edge Service and is of no force or effect. If you have any questions regarding the terms of this Order, please contact your Equinix Sales Representative. A PRODUCT PROVIDER EULABy clicking \"Accept\" you are agreeing to the terms and conditions of this Order on behalf of your Company. You are acknowledging that you have the full authority on behalf of your Company to enter into this online Order (\"Order\") as governed by and incorporated by reference into the applicable Master Country Agreement, Interconnection Terms and Conditions, or other similar agreement agreed to between the Parties (\"Agreement\"). Unless otherwise defined in this Order or if the context requires otherwise, all capitalized terms used in this Order shall have the meanings ascribed to them in the Agreement.\r\n‘Product(s)’ as used in this Order means all the products under this Order, including Licensed Space and/or Services (if any). The Initial Term is the term stated above, which commence on the date the Product(s) are delivered (“Effective Date”).  \r\n\r\nAfter the Initial Term, the term will automatically renew for a period equal to the Initial Term unless either Party terminates this Order by providing written non-renewal notice 90 days prior to the end of the then-current term to the other Party in which event this Order will terminate at the end of the then-current term. For the avoidance of doubt, the notice period for an Initial Term of one month is 30 days, rather than 90 days. \r\n\r\n\r\nThis Order incorporates the Product Provider EULA provided by Equinix to the Customer in Attachment A of this Order and the Product Policies, which are attached as Exhibits to the Customer’s Interconnection Terms and Conditions  . All Product(s) selected as part of this Order are subject to availability.\r\n\r\nEquinix, in its sole discretion, reserves the right to reject any handwritten or typed modification to this Agreement or any Order which is not mutually agreed to in writing. For purposes of this Order, the Parties hereby agree that the following ‘Price Increase Terms’ grid is not applicable to the Network Edge Service and is of no force or effect. If you have any questions regarding the terms of this Order, please contact your Equinix Sales Representative. ATTACHMENT A PRODUCT PROVIDER EULA
  VendorTermsResponse:
    type: object
    properties:
      terms:
        type: string
        example: https://www.cisco.com/c/en/us/about/legal/cloud-and-software/end_user_license_agreement.html
  OrderSummaryResponse:
    type: object
    properties:
      accountNumber:
        type: integer
        format: int32
      agreementId:
        type: string
      charges:
        type: array
        items:
          $ref: '#/definitions/DeviceElement'
      currency:
        type: string
      errorCode:
        type: string
      errorMessage:
        type: string
      esignAgreementId:
        type: string
      ibxCountry:
        type: string
      ibxRegion:
        type: string
      initialTerm:
        type: integer
        format: int32
      metro:
        type: string
      monthlyRecurringCharges:
        type: number
        format: double
      nonRecurringCharges:
        type: number
        format: double
      nonRenewalNotice:
        type: string
      orderTerms:
        type: string
      piPercentage:
        type: string
      productDescription:
        type: string
      quantity:
        type: integer
        format: int32
      quoteContentType:
        type: string
      quoteFileName:
        type: string
      referenceId:
        type: string
      renewalPeriod:
        type: integer
        format: int32
      requestSignType:
        type: string
      signStatus:
        type: string
      signType:
        type: string
      speed:
        type: string
      status:
        type: string
      totalCharges:
        type: number
        format: double
  DeviceElement:
    type: object
    properties:
      description:
        type: string
      monthlyRecurringCharges:
        type: number
        format: double
      nonRecurringCharges:
        type: number
        format: double
      productCode:
        type: string
  DeviceLinkRequest:
    type: object
    required:
    - groupName
    - subnet
    properties:
      groupName:
        type: string
        example: linkGroup
        description: Group name.
      subnet:
        type: string
        example: 192.164.0.0/29
        description: Subnet of the link group.
      redundancyType:
        type: string
        example: SECONDARY
        description: Whether the connection should be created through Fabric's primary or secondary port.
      linkDevices:
        type: array
        description: An array of devices to link.
        items:
          $ref: "#/definitions/LinkDeviceInfo"
        example:
          - deviceUuid: 9ea5a0e4-2bf7-45c2-9aa7-e846a8cd5560
            asn: 1007
            interfaceId: 7
          - deviceUuid: 8ea5a0e4-2bf7-45c2-9aa7-e846a8cd5561
            asn: 2006
            interfaceId: 6
      metroLinks:
        type: array
        description: An array of links.
        items:
          $ref: "#/definitions/LinkInfo"

  LinkDeviceResponse:
    type: object
    properties:
      deviceUuid:
        type: string
        description: A device that is part of the device linked group
        example: 8ea5a0e4-2bf7-45c2-9aa7-e846a8cd5561
      deviceName:
        type: string
        description: Device name
        example: Cisco Router1

      metroCode:
        type: string
        description: Metro Code
        example: DA
      metroName:
        type: string
        description: Name of the metro.
        example: Dallas
        
      deviceTypeCode:
        type: string
        example: C8000V
      category:
        type: string
        example: ROUTER
      ipAssigned:
        type: string
        example: 10.0.0.2/27
      interfaceId:
        type: integer
        example: 6
      status:
        type: string
        description: The status of the device
        example: PROVISIONING
      deviceManagementType:
        type: string
        description: Device management type
        example: EQUINIX-CONFIGURED
      networkScope:
        type: string
        example: TENANT
      isDeviceAccessible:
        type: boolean
        description: Whether the device is accessible
        example: true
        
        
  DeviceInfo:
    type: object
    properties:
      aside:
        $ref: "#/definitions/JsonNode"
      category:
        type: string
        description: Category of the device.
        example: ROUTER
      cloudProfileProvisioningStatus:
        type: string
        example: PROVISIONED
      connectionStatus:
        type: string
      connectionUuid:
        type: string
      deviceName:
        type: string
        description: Name of the device.
        example: CSR-Device01
      deviceTypeCode:
        type: string
        description: Device type code.
        example: C8000V
      deviceUUID:
        type: string
        description: Unique Id of the device.
        example: 9ea5a0e4-2bf7-45c2-9aa7-e846a8cd5560
      interfaceId:
        type: string
        example: '123'
      interfaceOverlayStatus:
        type: string
        example: PROVISIONED
      interfaceUUID:
        type: string
        description: Unique Id of the interface used to link the device.
        example: 6d5b942a-429e-494e-87e0-993845951cf
      ipAssigned:
        type: string
        description: Assigned IP address of the device.
        example: 10.0.0.2/27
      networkDetails:
        $ref: "#/definitions/JsonNode"
      status:
        type: string
        description: Status of the device.
        example: PROVISIONING
      throughput:
        type: string
        description: Throughput of the device.
        example: '500'
      throughputUnit:
        type: string
        description: Throughput unit of the device.
        example: Mbps
      vxlan:
        type: string
        example: '123'
  JsonNode:
    type: object
    properties:
      array:
        type: boolean
      bigDecimal:
        type: boolean
      bigInteger:
        type: boolean
      binary:
        type: boolean
      boolean:
        type: boolean
      containerNode:
        type: boolean
      double:
        type: boolean
      float:
        type: boolean
      floatingPointNumber:
        type: boolean
      int:
        type: boolean
      integralNumber:
        type: boolean
      long:
        type: boolean
      missingNode:
        type: boolean
      nodeType:
        type: string
        enum:
        - ARRAY
        - BINARY
        - BOOLEAN
        - MISSING
        - 'NULL'
        - NUMBER
        - OBJECT
        - POJO
        - STRING
      'null':
        type: boolean
      number:
        type: boolean
      object:
        type: boolean
      pojo:
        type: boolean
      short:
        type: boolean
      textual:
        type: boolean
      valueNode:
        type: boolean

  LinkInfo:
    type: object
    properties:
      accountNumber:
        type: string
        description: Account number. Either an account number or an accountreferenceId is required to create a link group.
        example: 345678
      throughput:
        type: string
        example: '1000'
        description: Metro Throughput.
      throughputUnit:
        type: string
        example: Mbps
        description: Throughput unit.
      metroCode:
        type: string
        example: SY
        description: Metro you want to link.





  LinkDeviceInfo:
    type: object
    required:
    - deviceUuid
    description: Unique Id of a device.
    properties:
      asn:
        type: integer
        format: int64
        example: 25658
        description: The ASN number of the device. The request will fail if you provide a new ASN for a device that already has an ASN.
      deviceUuid:
        type: string
        example: 70754e55-a064-40c3-a911-6dc1f14b96fd
        description: device
      interfaceId:
        type: integer
        example: 6
        description: Any available interface of the device.
  LinkInfoResponse:
    type: object
    properties:
      accountName:
        type: string
        description: Account name 
        example: Equinix
      metroCode:
        type: string
        example: SY
        description: Linked metro code
      metroName:
        type: string
        example: Singapore
        description: Linked metro name
      throughput:
        type: string
        example: '1000'
        description: Metro Throughput.
      throughputUnit:
        type: string
        example: Mbps
        description: Throughput unit.
  DeviceLinkGroupResponse:
    type: object
    properties:
      uuid:
        type: string
        example: a5d9182d-c529-451d-b137-3742d5a742ce
  DeviceLinkGroupDto:
    type: object
    properties:
      uuid:
        type: string
        description: Unique Id of the linked group. 
        example: 6ea5a0e4-2bf7-45c2-9aa7-e846a8cd5567
      groupName:
        type: string
        description: The name of the linked group
        example: my-new-link
      subnet:
        type: string
        description: Subnet of the link group.
        example: 10.0.0.0/27
      redundancyType:
        type: string
        description: Whether the connection is through Fabric's primary or secondary port.
        example: SECONDARY
      status:
        type: string
        description: Status of the linked group
        example: PROVISIONING
      createdBy:
        type: string
        description: Created by username.
        example: nfv-sit1
      createdDate:
        type: string
        description: Created date.
        example: '2019-09-15T10:30:31.387Z'
      lastUpdatedBy:
        type: string
        example: reg2-acc1
      lastUpdatedDate:
        type: string
        example: '2019-09-16T10:30:31.387Z'
      metroLinks:
        type: array
        description: An array of links
        items:
          $ref: "#/definitions/LinkInfoResponse"
      linkDevices:
        type: array
        description: An array of metros and the devices in the metros belonging to the group.
        items:
          $ref: "#/definitions/LinkDeviceResponse"
        example:
          - deviceUuid: 4cfb5675-5c3f-4275-adba-0c9e3c26c96b
            deviceName: Cisco Router1
            metroCode: DA
            metroName: Dallas
            deviceTypeCode: C8000V
            category: ROUTER
            ipAssigned: 10.0.0.0/27
            interfaceId: 5
            status: PROVISIONING
            deviceManagementType: SELF-CONFIGURED
            networkScope: TENANT
            isDeviceAccessible: true
          - deviceUuid: 5cfb5675-5c3f-4275-adba-0c9e3c26c96c
            deviceName: Cisco Router2
            metroCode: DA
            metroName: Dallas
            deviceTypeCode: C8000V
            category: ROUTER
            ipAssigned: 10.0.0.0/27
            interfaceId: 5
            status: PROVISIONING
            deviceManagementType: SELF-CONFIGURED
            networkScope: TENANT
            isDeviceAccessible: true               



  EquinixConfiguredConfig:
    type: object
    properties:
      type: 
        type: string
        example: EQUINIX-CONFIGURED
        description: Whether the device is EQUINIX-CONFIGURED or SELF-MANAGED.
      licenseOptions:
        type: object
        properties:
          SUB:
            type: object
            $ref: '#/definitions/licenseOptionsConfig'
          BYOL:
            type: object
            $ref: '#/definitions/licenseOptionsConfig'
      supportedServices:
        type: array
        items:
          $ref: '#/definitions/SupportedServicesConfig'
      additionalFields:
        type: array
        items:
          $ref: '#/definitions/AdditionalFieldsConfig'
      clusteringDetails:
        type: object
        $ref: '#/definitions/ClusteringDetails'
  SelfConfiguredConfig:
    type: object
    properties:
      type: 
        type: string
        example: SELF-CONFIGURED
        description: Whether the device is EQUINIX-CONFIGURED or SELF-MANAGED.
      licenseOptions:
        type: object
        properties:
          SUB:
            type: object
            items:
              $ref: '#/definitions/licenseOptionsConfig'
          BYOL:
            type: object
            items:
              $ref: '#/definitions/licenseOptionsConfig'
      supportedServices:
        type: array
        items:
          $ref: '#/definitions/SupportedServicesConfig'
      additionalFields:
        type: array
        items:
          $ref: '#/definitions/AdditionalFieldsConfig'
      defaultAcls:
        type: object
        $ref: '#/definitions/DefaultAclsConfig'
      clusteringDetails:
        type: object
        $ref: '#/definitions/ClusteringDetails'
        
  ClusteringDetails:
    type: object
    properties:
      clusteringEnabled:
        type: boolean
        description: Whether this device management type supports clustering.
      maxAllowedNodes:
        type: integer
        description: The number of nodes you can have for a cluster device.
  DefaultAclsConfig:
    type: object
    properties:
      dnsServers:
        type: array
        items: 
          type: string
          description: An array of dns servers.
          example: 8.8.8.8
      ntpServers:
        type: array
        items:
          type: string
          example: STD
          description: Software packages that are compatible with this service.
        

        
  AdditionalFieldsConfig:
    type: object
    properties:
      name: 
        type: string
        description: The name of field.
      required:
        type: boolean
        description: Whether or not the field is required at the time of device creation.
      isSameValueAllowedForPrimaryAndSecondary:
        type: boolean
        description: Whether or not you need two distinct values for primary and secondary devices at the time of device creation. This field is only useful for HA devices.
  SupportedServicesConfig:
    type: object
    properties:
      name:
        type: string
        description: The name of supported service.
      required:
        type: boolean
        description: Whether or not this supported service is a required input at the time of device creation.
      packageCodes:
        type: array
        items:
          type: string
          example: STD
          description: Software packages that are compatible with this service.
      supportedForClustering:
        type: boolean
        description: Whether the service is available for cluster devices.
        
        
  licenseOptionsConfig:
    type: object
    properties:
      type:
        type: string
        description: The type of the license.
      name:
        type: string
        description: The name of the license.
      fileUploadSupportedCluster:
        type: boolean
        description: Whether you can upload a license file for cluster devices.
      cores:
        type: array
        items:
          $ref: "#/definitions/CoresConfig"
          description: An array that has all the cores available for a license type.
          
  CoresConfig:
    type: object
    properties:
      core:
        type: integer
        example: 4
        description: The number of cores.
      memory:
        type: integer
        example: 4
        description: The amount of memory.
      unit:
        type: string
        example: GB
        description: The unit of memory.
      flavor:
        type: string
        example: Small
        description: Small, medium or large.
      packageCodes: 
        type: array
        items:
          $ref: "#/definitions/PackageCodes"
        description: An array that has all the software packages and throughput options.    
      supported:
        type: boolean
        description: Whether or not this core is supported.
      tier:
        type: integer
        example: 2
        description: Tier is relevant only for Cisco 8000V devices
  PackageCodes:
    type: object
    properties:
      packageCode: 
        type: string
        description: The type of package.
        example: APPX
      excludedVersions:
        type: array
        items:
          type: string
          example: 18.4R2-S1.4
          
      excludedClusterVersions:
        type: array
        items:
          type: string
          example: 18.4R2-S1.4
      supportedLicenseTiers:
        type: array
        items:
          type: string
        example:
          - 0
          - 1
          - 2
          - 3
      throughputs:
        type: array
        items:
          $ref: "#/definitions/ThroughputConfig" 
      supported:
        type: boolean
        description: Whether this software package is supported or not.
  ThroughputConfig:
    type: object
    properties:
      supported:
        type: boolean
        description: Whether this throughput is supported or not. 
      throughput:
        type: string
        description: Throughput.
      throughputUnit:
        type: string
        description: Throughput unit.
  VendorConfig:
    type: object
    properties:
      siteId:
        type: string
        example: 567
        description: Physical location within the Viptela overlay network, such as a branch office, or a campus (relevant only for Cisco SD-WANs)
      systemIpAddress:
        type: string
        description: IP assigned to the router and vSmart controller (relevant only for Cisco SD-WANs)
        example: 192.164.0.0
      licenseKey:
        type: string
        example: "6735-vwe64568-6a91-4112-8734-bea12d91f7y7"
      licenseSecret:
        type: string
        example: "h5j0i45e83324pblbfca764532c4a640e7801f0"
      localId:
        type: string
        example: branch1@example.com
      remoteId:
        type: string
        example: companyController1@example.com
      managementType:
        type: string
        example: FMC
        description: This is required for Cisco FTD Firewall devices. If you choose "FMC," you must also provide the controller IP and the activation key.
      controller1:
        type: string
        example: 54.219.248.29
        description: For Fortinet devices, this is the System IP address.
      controller2:
        type: string
        example: 54.177.220.115
      serialNumber:
        type: string
        example: 4545454
      adminPassword:
        type: string
        example: ZQeIDI7sUd
        description: The administrative password of the device. You can use it to log in to the console. This field is not available for all device types. Should be at least 6 characters long and must include an uppercase letter and a number. This field may be required for some vendors.
      activationKey:
        type: string
        example: GJUK-JM2X-59BJ-2TDJ
      controllerFqdn:
        type: string
        example: demo.velocloud.net
      rootPassword:
        type: string
        example: myPassw0rd!
      accountName:
        type: string
        example: accountName
        description: The name of account.
      hostname:
        type: string
        example: myHostname
        description: The host name.
      accountKey:
        type: string
        example: Primary Account Key1
        description: The account key.
      applianceTag:
        type: string
        example: applianceTag
        description: The appliance tag.
      userName:
        type: string
        description: This field is rel
      connectToCloudVision:
        type: boolean
        description: Whether you want your Arista device to connect to Cloud Vision. Only relevant for Arista devices. 
        example: true
      cvpType:
        type: string
        description: Either As-a-Service or On-Premise. Only relevant for Arista devices. 
        example: As-a-Service
      cvpFqdn:
        type: string
        description: Fully qualified domain name for Cloud Vision As-a-Service. Only relevant for Arista devices. 
        example: www.NetworkSolutions.com
      cvpIpAddress:
        type: string
        description: Only relevant for Arista devices. CvpIpAddress is required if connectToCloudVision=true and cvpType=On-Premise.
        example: 192.168.0.10
      cvaasPort:
        type: string
        description: Only relevant for Arista devices. CvaasPort is required if connectToCloudVision=true and cvpType=As-a-Service. 
        example: 443
      cvpPort:
        type: string
        description: Only relevant for Arista devices. CvpPort is required if connectToCloudVision=true and cvpType=On-Premise. 
        example: 443
      cvpToken:
        type: string
        description: Only relevant for Arista devices. CvpToken is required if connectToCloudVision=true and (cvpType=On-Premise or cvpType=As-a-Service).
        example: 123
      provisioningKey:
        type: string
        description: Only relevant for Zscaler devices
        example: samppleKey
      privateAddress:
        type: string
        description: Private address. Only relevant for BlueCat devices.
        example: 192.168.20.32
      privateCidrMask:
        type: string
        description: Private CIDR mask. Only relevant for BlueCat devices.
        example: 24
      privateGateway:
        type: string
        description: Private gateway. Only relevant for BlueCat devices.
        example: 192.168.20.1
      licenseId:
        type: string
        description: License Id. Only relevant for BlueCat devices.
        example: 000000123457777
      panoramaIpAddress: 
        type: string
        example: 1.1.1.1
        description: Provide this field to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access
      panoramaAuthKey:
        type: string
        example: 123456
        description: Provide this field to have Panorama integration. Relevant for Palo Alto Self-Configured devices with Internet Access

      

  VirtualDeviceInternalPatchRequestDto:
    type: object
    properties:
      core:
        type: integer
        description: Use this field to resize your device. When you call this API for device resizing, you cannot change other fields simultaneously.
        example: 8
      notifications:
        type: array
        items:
          type: string
          example: test1@example.com
      termLength:
        type: string
        description: Term length in months. 
        example: 1, 12, 24, 36
      termLengthEffectiveImmediate:
        type: boolean
        description: By default, this field is true. Set it to false if you want to change the term length at the end of the current term. You cannot downgrade the term length before the end of your current term. 
        example: false
      virtualDeviceName:
         type: string
         description: Virtual device name. This should be a minimum of 3 and a maximum of 50 characters.
         example: RCiscoSTROY
      clusterName:
        type: string
        description: Cluster name. This should be a minimum of 3 and a maximum of 50 characters.
        example: myCluster0123
      status:
        type: string
        description: Status of the device. Use this field to update the license status of a device.
        example: PROVISIONED
      autoRenewalOptOut:
        type: boolean
        description: By default, the autoRenewalOptOut field is false. Set it to true if you do not want to automatically renew your terms. Your device will move to a monthly cycle at the expiration of the current terms.
        example: true
      vendorConfig:
        type: object
        description: vendor config properties
        properties:
          disablePassword:
            type: boolean
            example: true
            description: Disable device password.
      
  VirtualDeviceCreateResponseDto:
    type: object
    properties:
      secondaryUuid:
        type: string
      uuid:
        type: string
        example: 877a3aa2-c49a-4af1-98a6-007424e737ae
parameters:
  authorizationHeader:
    name: Authorization
    in: header
    description: The OAuth Bearer token. Please add the prefix 'Bearer ' before the token.
    type: string
    required: true
    x-prefix: 'Bearer '
