swagger: '2.0'
info:
  version: ADM 13.0
  title: ADM ProvisioningService APIs
  description: ProvisioningService REST APIs
host: 'adm.cloud.com'
tags:
  - name: provisioning
    description: Provisioning API
#basePath: /provisioning/nitro/v1/config
consumes:
  - application/json
produces:
  - application/json
schemes:
#  - http
  - https

paths:
  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/subnets':
    get:
      summary: returns subnets in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiessubnets
      description: |
        Search for subnets in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSsubnets'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/vpcs':
    get:
      summary: returns vpcs in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesvpcs
      description: |
        Search for vpcs in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSvpcs'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/instance_types':
    get:
      summary: returns instance_types in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesinstance_types
      description: |
        Search for instance_types in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSinstance_types'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/autoscaling_groups':
    get:
      summary: returns autoscaling_groups in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesautoscaling_groups
      description: |
        Search for autoscaling_groups in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSautoscaling_groups'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/images':
    get:
      summary: returns images in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesimages
      description: |
        Search for images in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSimages'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/instance_profiles':
    get:
      summary: returns instance_profiles in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesinstance_profiles
      description: |
        Search for instance_profiles in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSinstance_profiles'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/vms':
    get:
      summary: returns vms in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesvms
      description: |
        Search for vms in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSvms'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/security_groups':
    get:
      summary: returns security_groups in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiessecurity_groups
      description: |
        Search for security_groups in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSsecurity_groups'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/availability_zones':
    get:
      summary: returns availability_zones in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesavailability_zones
      description: |
        Search for availability_zones in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSavailability_zones'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/regions':
    get:
      summary: returns regions in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesregions
      description: |
        Search for regions in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSregions'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/products':
    get:
      summary: returns products in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitiesproducts
      description: |
        Search for products in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWSproducts'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/aws_entities/hosted_zones':
    get:
      summary: returns hosted_zones in AWS
      tags:
        - provisioning
      operationId: queryAWSEntitieshosted_zones
      description: |
        Search for hosted_zones in AWS region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AWShosted_zones'
        400:
          description: bad input parameter


  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/subnets':
    get:
      summary: returns subnets in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiessubnets
      description: |
        Search for subnets in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREsubnets'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/vm_sizes':
    get:
      summary: returns vm_sizes in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesvm_sizes
      description: |
        Search for vm_sizes in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREvm_sizes'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/network_security_groups':
    get:
      summary: returns network_security_groups in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesnetwork_security_groups
      description: |
        Search for network_security_groups in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREnetwork_security_groups'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/regions':
    get:
      summary: returns regions in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesregions
      description: |
        Search for regions in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREregions'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/vnets':
    get:
      summary: returns vnets in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesvnets
      description: |
        Search for vnets in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREvnets'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/products':
    get:
      summary: returns products in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesproducts
      description: |
        Search for products in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREproducts'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/images':
    get:
      summary: returns images in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesimages
      description: |
        Search for images in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREimages'
        400:
          description: bad input parameter
          
  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/resource_groups':
    get:
      summary: returns resource_groups in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesresource_groups
      description: |
        Search for resource_groups in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREresource_groups'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/azure_entities/dns_zones':
    get:
      summary: returns dns_zones in Azure
      tags:
        - provisioning
      operationId: queryAzureEntitiesdns_zones
      description: |
        Search for dns_zones in Azure region asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AZUREdns_zones'
        400:
          description: bad input parameter

  
  '/massvc/{customerid}/provisioning/nitro/v1/config/vcenter_entities/templates':
    get:
      summary: returns templates in vCenter
      tags:
        - provisioning
      operationId: queryVCENTEREntitiestemplates
      description: |
        Search for templates in vCenter datacenter asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/ESXtemplates'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/vcenter_entities/datacenters':
    get:
      summary: returns datacenters in vCenter
      tags:
        - provisioning
      operationId: queryVCENTEREntitiesdatacenters
      description: |
        Search for datacenters in vCenter datacenter asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/ESXdatacenters'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/vcenter_entities/hosts':
    get:
      summary: returns hosts in vCenter
      tags:
        - provisioning
      operationId: queryVCENTEREntitieshosts
      description: |
        Search for hosts in vCenter datacenter asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/ESXhosts'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/vcenter_entities/datastores':
    get:
      summary: returns datastores in vCenter
      tags:
        - provisioning
      operationId: queryVCENTEREntitiesdatastores
      description: |
        Search for datastores in vCenter datacenter asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/ESXdatastores'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/vcenter_entities/clusters':
    get:
      summary: returns clusters in vCenter
      tags:
        - provisioning
      operationId: queryVCENTEREntitiesclusters
      description: |
        Search for clusters in vCenter datacenter asscoiated with given
        Access profile
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/entitiesAccessProfileIdParam'
        - $ref: '#/parameters/filterParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/ESXclusters'
        400:
          description: bad input parameter

  '/massvc/{customerid}/provisioning/nitro/v1/config/access_profiles':
    post:
      summary: adds access_profile
      tags:
        - provisioning
      operationId: addAccessProfile
      description: Adds an item to the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: access_profiles
          description: access_profile item to add
          schema:
            $ref: '#/definitions/AccessProfileObject'
      responses:
        201:
          description: item created
          schema:
            $ref: '#/definitions/AccessProfileResponseList'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: searches and returns access_profiles
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      tags:
        - provisioning
      operationId: searchAccessProfile
      description: |
        By passing in the appropriate options, you can search for
        available Access Profiles in the system
      responses:
        200:
          description: search results matching criteria
          schema:  
            $ref: '#/definitions/AccessProfileResponseList'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/access_profiles/{profile_id}':
    get:
      summary: searches access_profiles
      tags:
        - provisioning
      operationId: searchSpecificAccessProfile
      description: |
        By passing in the appropriate Profile ID, you can search for
        specific Access Profiles in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: profile_id
          in: path
          description: ID of access_profile to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/AccessProfileResponseList'
        400:
          description: bad input parameter
        404:
          description: item not found
    delete:
      summary: searches and deletes access_profiles
      tags:
        - provisioning
      operationId: deleteSpecificAccessProfile
      description: |
        By passing in the appropriate Profile ID, you can delete specific Access Profile in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: profile_id
          in: path
          description: ID of access_profile to delete
          required: true
          type: string
      responses:
        204:
          description: Deleted an item matching criteria
        400:
          description: bad input parameter
        404:
          description: item not found
    put:
      summary: searches and updates access_profile
      tags:
        - provisioning
      operationId: updateSpecificAccessProfile
      description: |
        By passing in the appropriate Profile ID, you can update specific Access Profiles in the system.
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: profile_id
          in: path
          description: ID of access_profile to update
          required: true
          type: string
        - in: body
          name: access_profile
          description: access_profile item to update
          schema:
            $ref: '#/definitions/AccessProfileObjectWithId'
      responses:
        200:
          description: Updated an item matching profile_id
          schema:
            $ref: '#/definitions/AccessProfileResponseList'
        400:
          description: bad input parameter
        404:
          description: item not found
        409:
          description: value conflicts with existing values.

  '/massvc/{customerid}/provisioning/nitro/v1/config/provisioning_profiles':
    post:
      summary: adds provisioning_profiles
      tags:
        - provisioning
      operationId: addProvisioningProfile
      description: Adds an item to the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: provisioning_profiles
          description: provisioning_profile items to add
          schema:
            $ref: '#/definitions/ProvisioningProfileObject'
      responses:
        201:
          description: item created
          schema:
            $ref: '#/definitions/ProvisioningProfileObjectWithId'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: searches and returns provisioning_profiles
      tags:
        - provisioning
      operationId: searchProvisioningProfile
      description: |
        By passing in the appropriate options, you can search for
        available Provisioning Profiles in the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/ProvisioningProfileList'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/provisioning_profiles/{profile_id}':
    get:
      summary: searches provisioning_profiles
      tags:
        - provisioning
      operationId: searchSpecificProvisioningProfile
      description: |
        By passing in the appropriate Profile ID, you can search for
        specific Provisioning Profiles in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: profile_id
          in: path
          description: ID of provisioning_profile to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/ProvisioningProfileObjectWithId'
        400:
          description: bad input parameter
        404:
          description: item not found
    delete:
      summary: searches and deletes provisioning_profiles
      tags:
        - provisioning
      operationId: deleteSpecificProvisioningProfile
      description: |
        By passing in the appropriate Profile ID, you can delete specific
        Provisioning Profiles in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: profile_id
          in: path
          description: ID of provision_ngprofile to delete
          required: true
          type: string
      responses:
        204:
          description: Deleted an item matching criteria
        400:
          description: bad input parameter
        404:
          description: item not found
    put:
      summary: searches and updates provsioning_profile
      tags:
        - provisioning
      operationId: updateSpecificProvisioningProfile
      description: |
        By passing in the appropriate Profile ID, you can update specific
        Provisioning profiles in the system.
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: profile_id
          in: path
          description: ID of provsioning_profile to update
          required: true
          type: string
        - in: body
          name: provsioning_profile
          description: provsioning_profile item to update
          schema:
            $ref: '#/definitions/ProvisioningProfileObjectWithId'
      responses:
        200:
          description: Updated an item matching profile_id
          schema:
            $ref: '#/definitions/ProvisioningProfileObjectWithId'
        400:
          description: bad input parameter
        404:
          description: item not found
        409:
          description: value is conflicting in existing item

  '/massvc/{customerid}/provisioning/nitro/v1/config/instances':
    post:
      summary: provisions instance on platform
      tags:
        - provisioning
      operationId: provisionInstance
      description: provisions instance on platform
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: instances
          description: instance payload to provision
          schema:
            $ref: '#/definitions/InstanceObject'
      responses:
        200:
          description: item created
          schema:
              $ref: '#/definitions/AsyncJobForInstanceResponseBody'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: returns instances provisioned
      tags:
        - provisioning
      operationId: queryprovisionedInstances
      description: |
        By passing in the appropriate options, you can search for
        instances provisioned in the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/InstanceList'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/instances/{instance_id}':
    get:
      summary: searches instance
      tags:
        - provisioning
      operationId: searchSpecificInstanceProvisioned
      description: |
        By passing in the appropriate instance_id, you can search for
        specific Instance Provisioned in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: instance_id
          in: path
          description: ID of instance provisioned to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/InstanceResponseObject'
        400:
          description: bad input parameter
        404:
          description: item  not found
    delete:
      summary: deprovision instance matching instance_id
      tags:
        - provisioning
      operationId: deleteSpecificInstanceProvisioned
      description: |
        By passing in the appropriate instance_id, you can delete specific
        Instance Provisioned in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: instance_id
          in: path
          description: ID of instance provisioned to deprovision
          required: true
          type: string
      responses:
        200:
          description: Deprovisioned an instance matching criteria
          schema:
              $ref: '#/definitions/AsyncJobForInstanceResponseBody'
        400:
          description: bad input parameter
        404:
          description: item not found

  '/massvc/{customerid}/provisioning/nitro/v1/config/clusters':
    get:
      description: Retrieves all clusters in the system
      tags:
        - provisioning
      operationId: GetAllClustersDetails
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        '200':
          description: Successful retrieval of all clusters in the system
          schema:
            $ref: '#/definitions/GetAllClustersDetailsResponseBody'
    post:
      description: Provision new cluster
      tags:
        - provisioning
      operationId: CreateCluster
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: Body
          in: body
          required: true
          x-is-map: false
          schema:
            $ref: '#/definitions/CreateClusterRequestBody'
      responses:
        '200':
          description: Successful submission of request to provision an cluster
          schema:
            $ref: '#/definitions/AsyncJobForClusterResponseBody'
  '/massvc/{customerid}/provisioning/nitro/v1/config/clusters/{ns_cluster_id}':
    get:
      description: Retrieve cluster details
      tags:
        - provisioning
      operationId: GetCluster
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
      responses:
        '200':
          description: Successful retrieval of Cluster details
          schema:
            $ref: '#/definitions/GetClusterDetailsResponseBody'
    delete:
      description: Deprovision cluster.
      tags:
        - provisioning
      operationId: DeleteCluster
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
      responses:
        '200':
          description: Successful submission of request to deprovision an cluster
          schema:
            $ref: '#/definitions/AsyncJobForClusterResponseBody'
  '/massvc/{customerid}/provisioning/nitro/v1/config/clusters/{ns_cluster_id}/nodes':
    get:
      description: Retrieves all nodes of cluster in the system
      tags:
        - provisioning
      operationId: GetAllClusterNodesDetails
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
      responses:
        '200':
          description: Successful retrieval of all nodes of cluster in the system
          schema:
            $ref: '#/definitions/GetAllClusterNodesDetailsResponseBody'
    post:
      description: Provision new cluster node
      tags:
        - provisioning
      operationId: CreateClusterNode
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
        - name: Body
          in: body
          required: true
          x-is-map: false
          schema:
            $ref: '#/definitions/CreateClusterNodeRequestBody'
      responses:
        '200':
          description: Successful submission of request to provision an cluster node
          schema:
            $ref: '#/definitions/AsyncJobForClusterNodeResponseBody'
  '/massvc/{customerid}/provisioning/nitro/v1/config/clusters/{ns_cluster_id}/nodes/{ns_cluster_node_id}':
    get:
      description: Retrieve cluster node details
      tags:
        - provisioning
      operationId: GetClusterNode
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
        - $ref: '#/parameters/nsClusterNodeIdParam'
      responses:
        '200':
          description: Successful retrieval of Cluster node details
          schema:
            $ref: '#/definitions/GetClusterNodeDetailsResponseBody'
    post:
      description: Provision a new cluster node with specific instructions.
      tags:
        - provisioning
      operationId: CreateClusterNodeWithParams
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
        - $ref: '#/parameters/nsClusterNodeIdParam'
        - name: Body
          in: body
          required: true
          x-is-map: false
          schema:
            $ref: '#/definitions/CreateClusterNodeRequestBody'
      responses:
        '200':
          description: Successful submission of request to provision an cluster node
          schema:
            $ref: '#/definitions/AsyncJobForClusterNodeResponseBody'
    delete:
      description: Deprovision cluster node.
      tags:
        - provisioning
      operationId: DeleteClusterNode
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/nsClusterIdParam'
        - $ref: '#/parameters/nsClusterNodeIdParam'
      responses:
        '200':
          description: Successful submission of request to deprovision an cluster node
          schema:
            $ref: '#/definitions/AsyncJobForClusterNodeResponseBody'

  '/massvc/{customerid}/provisioning/nitro/v1/config/ha':
    post:
      summary: provisions HA on platform
      tags:
        - provisioning
      operationId: provision
      description: provisions HA on platform
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: ha
          description: HA payload to provision
          schema:
            $ref: '#/definitions/haObject'
      responses:
        201:
          description: item created
          schema:
              $ref: '#/definitions/haAsyncResponse'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: returns HAs provisioned
      tags:
        - provisioning
      operationId: get_all
      description: |
        By passing in the appropriate options, you can search for HA provisioned in the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/haGetResponse'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/ha/{ha_id}':
    get:
      summary: searches HA
      tags:
        - provisioning
      operationId: get_HA_by_id
      description: |
        By passing in the appropriate instance_id, you can search for specific HA Provisioned in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: ha_id
          in: path
          description: ID of HA provisioned to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/haGetSingleResponse'
        400:
          description: bad input parameter
        404:
          description: item  not found
    delete:
      summary: deprovision HA matching ha_id
      tags:
        - provisioning
      operationId: delete_HA
      description: |
        By passing in the appropriate instance_id, you can delete specific HA Provisioned in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: ha_id
          in: path
          description: ID of HA provisioned to deprovision
          required: true
          type: string
      responses:
        200:
          description: Deprovisioned an HA matching criteria
          schema:
            $ref: '#/definitions/haAsyncResponse'
        400:
          description: bad input parameter
        404:
          description: item not found

  '/massvc/{customerid}/provisioning/nitro/v1/config/agents':
    post:
      summary: provisions agent on platform
      tags:
        - provisioning
      operationId: provisionAgent
      description: provisions agent on platform
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: agents
          description: agent payload to provision
          schema:
            $ref: '#/definitions/AgentObject'
      responses:
        200:
          description: item created
          schema:
              $ref: '#/definitions/AsyncJobForAgentResponseBody'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: returns agents provisioned
      tags:
        - provisioning
      operationId: queryprovisionedAgents
      description: |
        By passing in the appropriate options, you can search for
        agents provisioned in the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/AgentList'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/agents/{agent_id}':
    get:
      summary: searches agent
      tags:
        - provisioning
      operationId: searchSpecificAgentProvisioned
      description: |
        By passing in the appropriate agent_id, you can search for
        specific Agent Provisioned in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: agent_id
          in: path
          description: Provision ID of agent provisioned to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/AgentResponseObject'
        400:
          description: bad input parameter
        404:
          description: item  not found
    delete:
      summary: deprovision agent matching agent_id
      tags:
        - provisioning
      operationId: deleteSpecificAgentProvisioned
      description: |
        By passing in the appropriate agent_id, you can delete specific
        Agent Provisioned in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: agent_id
          in: path
          description: ID of agent provisioned to deprovision
          required: true
          type: string
      responses:
        200:
          description: Deprovisioned an agent matching criteria
          schema:
              $ref: '#/definitions/AsyncJobForAgentResponseBody'
        400:
          description: bad input parameter
        404:
          description: item not found

  '/massvc/{customerid}/provisioning/nitro/v1/config/gateways':
    post:
      summary: provisions gateway on platform
      tags:
        - provisioning
      operationId: provisionGateway
      description: provisions gateway on platform
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: gateways
          description: gateway payload to provision
          schema:
            $ref: '#/definitions/GatewayObject'
      responses:
        200:
          description: item created
          schema:
              $ref: '#/definitions/AsyncJobForGatewayResponseBody'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: returns gateways provisioned
      tags:
        - provisioning
      operationId: queryprovisionedGateways
      description: |
        By passing in the appropriate options, you can search for
        gateways provisioned in the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/GatewayList'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/gateways/{gateway_id}':
    get:
      summary: searches gateway
      tags:
        - provisioning
      operationId: searchSpecificGatewayProvisioned
      description: |
        By passing in the appropriate gateway_id, you can search for
        specific Gateway Provisioned in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: gateway_id
          in: path
          description: ID of gateway provisioned to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/GatewayResponseObject'
        400:
          description: bad input parameter
        404:
          description: item  not found
    delete:
      summary: deprovision gateway matching gateway_id
      tags:
        - provisioning
      operationId: deleteSpecificGatewayProvisioned
      description: |
        By passing in the appropriate gateway_id, you can delete specific
        Gateway Provisioned in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: gateway_id
          in: path
          description: ID of gateway provisioned to deprovision
          required: true
          type: string
      responses:
        200:
          description: Deprovisioned an gateway matching criteria
          schema:
              $ref: '#/definitions/AsyncJobForGatewayResponseBody'
        400:
          description: bad input parameter
        404:
          description: item not found
  '/massvc/{customerid}/provisioning/nitro/v1/config/ipsets':
    post:
      summary: Add ipset in a cluster
      tags:
        - provisioning
      operationId: addIpset
      description: Add ipset in a cluster
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: ipsets
          description: gateway payload to provision
          schema:
            $ref: '#/definitions/IpsetObject'
      responses:
        200:
          description: item created
          schema:
              $ref: '#/definitions/AsyncJobForIpsetResponseBody'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
    get:
      summary: returns ipsets provisioned
      tags:
        - provisioning
      operationId: queryprovisionedIpsets
      description: |
        By passing in the appropriate options, you can search for
        ipsets provisioned in the system
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/IpsetList'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/ipsets/{ipset_id}':
    get:
      summary: searches ipset
      tags:
        - provisioning
      operationId: searchSpecificIpsetProvisioned
      description: |
        By passing in the appropriate ipset_id, you can search for
        specific Ipset Provisioned in the system
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: ipset_id
          in: path
          description: ID of ipset provisioned to return
          required: true
          type: string
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/IpsetResponseObject'
        400:
          description: bad input parameter
        404:
          description: item  not found
    delete:
      summary: deprovision ipset matching ipset_id
      tags:
        - provisioning
      operationId: deleteSpecificIpsetProvisioned
      description: |
        By passing in the appropriate ipset_id, you can delete specific
        Ipset Provisioned in the system.
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - name: ipset_id
          in: path
          description: ID of ipset provisioned to deprovision
          required: true
          type: string
      responses:
        200:
          description: Deprovisioned an ipset matching criteria
          schema:
              $ref: '#/definitions/AsyncJobForIpsetResponseBody'
        400:
          description: bad input parameter
        404:
          description: item not found
  '/massvc/{customerid}/provisioning/nitro/v1/config/requests/{request_id}':
    post:
      summary: Process request for resume or cleanup
      tags:
        - provisioning
      operationId: processRequest
      description: Process request for resume or cleanup
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/provisionRequestIdParam'
        - $ref: '#/parameters/actionParam'
      responses:
        200:
          description: item created
          schema:
              $ref: '#/definitions/AsyncJobForRequestResponseBody'
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
  '/massvc/{customerid}/provisioning/nitro/v1/config/jobs/{job_id}':
    get:
      summary: returns status of the async job
      tags:
        - provisioning
      operationId: queryJobs
      description: |
        Returns status of Async job
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - $ref: '#/parameters/jobIdParam'
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/Jobs'
        400:
          description: bad input parameter
  '/massvc/{customerid}/provisioning/nitro/v1/config/iamcfts':
    get:
      summary: Get AWS IAM Cloud Formation Template
      tags:
        - provisioning
      operationId: getiamcfts
      description: Get AWS IAM Cloud Formation Template
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
      responses:
        200:
          description: search results matching criteria
          schema:
            $ref: '#/definitions/iamcfts'
        400:
          description: bad input parameter
        404:
          description: item  not found
  '/massvc/{customerid}/provisioning/nitro/v1/config/uploadconfig':
    post:
      summary: Post a config (Only for Dev environment)
      tags:
        - provisioning
      operationId: processUploadConfig
      description: Post a config (Only for Dev environment)
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: body
          name: config
          description: Config contents
          schema:
            $ref: '#/definitions/UploadConfigObject'
      responses:
        200:
          description: item created
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
  '/massvc/{customerid}/provisioning/nitro/v1/config/uploadconfig/{config_name}':
    get:
      summary: returns contents of config (Only for Dev environment)
      tags:
        - provisioning
      operationId: queryUploadConfig
      description: |
        returns contents of config (Only for Dev environment)
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: path
          name: config_name
          type: string
          required: true
      responses:
        200:
          description: search results matching criteria
          schema:
              $ref: '#/definitions/UploadConfigContentsResponse'
        400:
          description: bad input parameter
    delete:
      summary: remove config (Only for Dev environment)
      tags:
        - provisioning
      operationId: deleteUploadConfig
      description: |
        remove config file (Only for Dev environment)
      
      parameters:
        - $ref: '#/parameters/customerid'
        - $ref: '#/parameters/authTokenHeaderParam'
        - $ref: '#/parameters/iscloudHeaderParam'
        - in: path
          name: config_name
          type: string
          required: true
      responses:
        200:
          description: Removed config
        400:
          description: bad input parameter
        404:
          description: item not found

parameters:
  authHeaderParam:
    in: header
    name: Cookie
    type: string
    required: true
    description: Session Id for authentication. Should be mentioned in the format SESSID=sessionIdValue.
  authTokenHeaderParam:
    in: header
    name: Authorization
    type: string
    required: true
    description: Session Id for authentication.Should be mentioned in the format CwcAuth bearer=sessionIdValue.
  iscloudHeaderParam:
    in: header
    name: isCloud
    type: string
    enum: [true,false]
  entitiesAccessProfileIdParam:
    name: access_profile_id
    in: query
    type: string
    description: Access profile id
    required: true
  filterParam:
    name: filter
    in: query
    type: array
    collectionFormat: csv
    items:
      type: string
  profileIdParam:
    name: profile_id
    in: path
    type: string
    description: profile_id of the Access Profile/Provisioning Profile
    required: true
  nsInstanceIdParam:
    name: ns_instance_id
    in: path
    type: string
    description: managed_device_id of the instance
    required: true
  nsClusterIdParam:
    name: ns_cluster_id
    in: path
    type: string
    description: managed_device_id of the cluster
    required: true
  nsClusterNodeIdParam:
    name: ns_cluster_node_id
    in: path
    type: string
    description: managed_device_id of the cluster node
    required: true
  jobIdParam:
    name: job_id
    in: path
    type: string
    description: Job id
    required: true
  provisionRequestIdParam:
    name: request_id
    in: path
    type: string
    description: Provision Request id
    required: true
  actionParam:
    name: action
    in: query
    type: string
    required: true
    enum: [resume, cleanup]
  customerid:
    in: path
    name: customerid
    type: string
    required: true
    description: Customer Id of the user

definitions:


  AWSsubnets:
    type: object
    properties:
      subnets:
        type: array
        items:
          type: object
          properties:

            availability_zone:
              type: string

            vpc_id:
              type: string

            cidr_block:
              type: string

            id:
              type: string

            name:
              type: string


  AWSvpcs:
    type: object
    properties:
      vpcs:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            cidr_block:
              type: string

            is_default:
              type: string

            name:
              type: string


  AWSinstance_types:
    type: object
    properties:
      instance_types:
        type: array
        items:
          type: object


  AWSautoscaling_groups:
    type: object
    properties:
      autoscaling_groups:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            arn:
              type: string

            launch_configuration:
              type: string

            availability_zones:
              type: string

            instances:
              type: string

            created_time:
              type: string

            vpc_zone_id:
              type: string

            tags:
              type: string


  AWSimages:
    type: object
    properties:
      images:
        type: array
        items:
          type: object
          properties:

            ami_id:
              type: string

            major_version:
              type: string

            minor_version:
              type: string

            name:
              type: string


  AWSinstance_profiles:
    type: object
    properties:
      instance_profiles:
        type: array
        items:
          type: object
          properties:

            instance_profile_id:
              type: string

            instance_profile_name:
              type: string

            arn:
              type: string

            policies:
              type: string


  AWSvms:
    type: object
    properties:
      vms:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            id:
              type: string

            image_id:
              type: string

            instance_type:
              type: string

            private_ip:
              type: string

            public_ip:
              type: string

            security_groups:
              type: string

            subnet:
              type: string

            vpc_id:
              type: string

            availability_zone:
              type: string


  AWSsecurity_groups:
    type: object
    properties:
      security_groups:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            id:
              type: string

            vpc_id:
              type: string


  AWSavailability_zones:
    type: object
    properties:
      availability_zones:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            region_name:
              type: string


  AWSregions:
    type: object
    properties:
      regions:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            endpoint:
              type: string

            display_name:
              type: string


  AWShosted_zones:
    type: object
    properties:
      hosted_zones:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            zone_type:
              type: string

            name:
              type: string

            rrset_count:
              type: string

  AWSproducts:
    type: object
    properties:
      products:
        type: array
        items:
          type: object
          properties:

            Capacity:
              type: string

            Name:
              type: string

            ProductCode:
              type: string
            AllowedInstanceType:
              type: array
              items:
                type: object
                properties:
                  bandwidth:
                    type: string
                  id:
                    type: string
                  name:
                    type: string
                  ram:
                    type: integer
                  extra:
                    type: object
                  nics_count:
                    type: integer
            RecommendedInstanceType:
              type: array
              items:
                type: object
                properties:
                  bandwidth:
                    type: string
                  id:
                    type: string
                  name:
                    type: string
                  ram:
                    type: integer
                  extra:
                    type: object
                  nics_count:
                    type: integer



  AZUREsubnets:
    type: object
    properties:
      subnets:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            name:
              type: string

            cidr_block:
              type: string


  AZUREresource_groups:
    type: object
    properties:
      resource_groups:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            location:
              type: string

            name:
              type: string

  AZUREnetwork_security_groups:
    type: object
    properties:
      network_security_groups:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            name:
              type: string


  AZUREregions:
    type: object
    properties:
      regions:
        type: array
        items:
          type: object
          properties:

            display_name:
              type: string

            id:
              type: string

            name:
              type: string

            latitude:
              type: string

            longitude:
              type: string

            is_availability_zone:
              type: string


  AZUREvnets:
    type: object
    properties:
      vnets:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            name:
              type: string

            cidr_block:
              type: string

            location:
              type: string

            resource_group:
              type: string

  AZUREvm_sizes:
    type: array
    items:
      type: object
      properties:
        max_data_disk_count:
          type: integer
        memory_in_mb:
          type: integer
        name:
          type: string
        number_of_cores:
          type: integer
        os_disk_size_in_mb:
          type: integer
        resource_disk_size_in_mb:
          type: integer

  AZUREdns_zones:
    type: object
    properties:
      dns_zones:
        type: array
        items:
          type: object
          properties:

            id:
              type: string

            name:
              type: string

            zone_type:
              type: string

  AZUREproducts:
    type: object
    properties:
      products:
        type: array
        items:
          type: object
          properties:

            name:
              type: string
            Capacity:
              type: string
            productcode:
              type: string

            allowedinstancetype:
              type: array
              items:
                type: object
                properties:
                  max_data_disk_count:
                    type: integer
                  memory_in_mb:
                    type: integer
                  name:
                    type: string
                  number_of_cores:
                    type: integer
                  os_disk_size_in_mb:
                    type: integer
                  resource_disk_size_in_mb:
                    type: integer
                  nics_count:
                    type: integer
            recommendedinstancetype:
              type: array
              items:
                type: object
                properties:
                  max_data_disk_count:
                    type: integer
                  memory_in_mb:
                    type: integer
                  name:
                    type: string
                  number_of_cores:
                    type: integer
                  os_disk_size_in_mb:
                    type: integer
                  resource_disk_size_in_mb:
                    type: integer
                  nics_count:
                    type: integer

  AZUREimages:
    type: object
    properties:
      images:
        type: array
        items:
          type: object
          properties:

            azure_urn:
              type: string

            major_version:
              type: string

            minor_version:
              type: string

            name:
              type: string



  ESXtemplates:
    type: object
    properties:
      templates:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            path:
              type: string

            parent:
              type: string

            os:
              type: string

            status:
              type: string


  ESXdatacenters:
    type: object
    properties:
      datacenters:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            vmFolder:
              type: string

            status:
              type: string

            network:
              type: string


  ESXhosts:
    type: object
    properties:
      hosts:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            status:
              type: string

            network:
              type: string

            parent:
              type: string

            datacenter:
              type: string


  ESXdatastores:
    type: object
    properties:
      datastores:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            host:
              type: string

            uuid:
              type: string

            capacity:
              type: string

            ssd:
              type: string

            freespace:
              type: string


  ESXclusters:
    type: object
    properties:
      clusters:
        type: array
        items:
          type: object
          properties:

            name:
              type: string

            status:
              type: string

            network:
              type: string

            parent:
              type: string

            hosts:
              type: string

            datacenter:
              type: string



  AWSAccessDetails:
      type: object
      properties:
        role_arn:
          type: string
          description: ARN for authorized IAM role. Applicable for AWS platform only.
          example: arn:aws:iam::417067727217:role/Citrix-ADM-ForAutomatedTesting
        external_id:
          type: string
          description: External id for authorized IAM role. Applicable for AWS platform only.
          example: ForAutomatedTesting
  AzureAccessDetails:
    type: object
    properties:
      subscription_id:
        type: string
        description: subscription id for Azure subscription. Applicable for Azure platform only.
        example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
      client_id:
        type: string
        description: Application ID / Client ID. Applicable for Azure platform only.
        example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
      secret:
        type: string
        description: Application Key Password / Secret. Applicable for Azure platform only.
        example: xyz
      tenant:
        type: string
        description: Tenant Active Directory ID / Tenant ID. Applicable for Azure platform only.
        example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
  ESXAccessDetails:
    type: object
    properties:
      vcenter_ip:
        type: string
        description: IP for vCenter to access ESX host
        example: 10.102.205.133
      vcenter_username:
        type: string
        description: Username for vCenter to access ESX host
        example: administrator
      vcenter_password:
        type: string
        description: Password for vCenter to access ESX host
  AccessProfileObject:
    type: object
    properties:
      access_profiles:
        $ref: '#/definitions/AccessProfile'
  AccessProfile:
    type: object
    properties:
      name:
        type: string
        description: Name of the AccessProfile
        example: staging_aws_john
      platform_type:
        type: string
        description: Platform type to which this access details is associated.
        enum: [aws, azure, esx]
        example: aws
      access_details:
        type: object
        description: Dictionary containing Authentication/Authorization info.
        properties:
          aws:
            $ref: '#/definitions/AWSAccessDetails'
          azure:
            $ref: '#/definitions/AzureAccessDetails'
          esx:
            $ref: '#/definitions/ESXAccessDetails'

  AccessProfileWithId:
    required:
        - "id"
    allOf:
      - properties:
          id:
            type: "string"
            example: 82308ca33-371c-4920-9162-910bd43204ba
      - $ref: '#/definitions/AccessProfile'
  AccessProfileObjectWithId:
    type: object
    properties:
      access_profiles:
        $ref: '#/definitions/AccessProfileWithId'
  AccessProfileResponse:
    type: object
    properties:
      id:
        type: "string"
        example: 82308ca33-371c-4920-9162-910bd43204ba
      name:
        type: "string"
        description: Name of the AccessProfile
        example: staging_aws_john
      platform_type:
        type: "string"
        description: Platform type to which this access details is associated.
        example: aws
        enum: [aws, azure]
    required:
        - id
        - name
        - platform_type

  AccessProfileResponseList:
    type: object
    properties:
      access_profiles:
        type: array
        items:
          $ref: '#/definitions/AccessProfileResponse'

  PooledLicenses:
    type: object
    properties:
      type:
        type: string
        enum: ["Capacity", "VCPUS", "CICO"]
      model:
        type: string
        description: Applicable for type=CICO
      bandwidth:
        type: string
        description: Applicable for type=Capacity
      unit:
        type: string
        description: Bandwidth's unit. Applicable for type=Capacity
      edition:
        type: string
        description: Applicable for type=Capacity & type=VCPUS
      vcpu:
        type: string
        description: Applicable for type=VCPUS
  AWSNetworks:
    type: array
    items:
      type: object
      required:
        - subnet_id
        - purpose
      properties:
        purpose:
          type: array
          description: Puspose of subnet to indicate whether it is a management/client/server subnet.
          items:
            type: string
            enum: [management, client, server]
          example: [management]
        security_group_id:
          type: string
          description: Reference to security_group to be attached for the interface that plugs this subnet.
          example: sg-9ad143f0
        subnet_id:
          type: string
          description: Reference to subnet to which instance has to be plugged.
          example: subnet-8518c2c8
  AzureNetworks:
    type: array
    items:
      type: object
      required:
        - subnet_id
        - purpose
      properties:
        purpose:
          type: array
          description: Puspose of subnet to indicate whether it is a management/client/server subnet.
          items:
            type: string
            enum: [management, client, server, private, public]
          example: [management]
        network_security_group_id:
          type: string
          description: Reference to security_group to be attached for the interface that plugs this subnet.
          example: sg-9ad143f0
        subnet_id:
          type: string
          description: Reference to subnet to which instance has to be plugged.
          example: subnet-8518c2c8
  ESXNetworks:
    type: array
    items:
      type: object
      required:
        - ip
        - purpose
      properties:
        purpose:
          type: array
          description: Puspose of subnet to indicate whether it is a management/client/server subnet.
          items:
            type: string
            enum: [management, client, server]
          example: [management]
        ip:
          type: string
          description: IP for Citrix ADC
          example: 10.102.106.23
        netmask:
          type: string
          description: Netmask for Citrix ADC
          example: 255.255.254.0
        gateway:
          type: string
          description: Gateway configuration for Citrix ADC
          example: 10.102.106.1
  AWSDeploymentDetails:
    type: object
    required:
      - networks
    properties:
      vpc_id:
        type: string
        description: Reference to AWS VPC where instance has to be provisioned.
        example: vpc-63bd5c08
      availability_zone:
        type: string
        description: Name of the Availability zone where instance has to be provisioned.
        example: eu-central-1a
      networks:
        $ref: '#/definitions/AWSNetworks'
  AzureDeploymentDetails:
    type: object
    required:
      - networks
    properties:
      azure_resource_group_name:
        type: string
        description: Reference to Azure resource group where instance has to be provisioned.
        example: PoPs_WestUS2
      availability_zone:
        description: Name of the Availability zone where instance has to be provisioned.
        example: 1
      networks:
        $ref: '#/definitions/AzureNetworks'
      target_groups:
        type: array
        items:
          type: object
          properties:
            name:
              description: Format is <cluster-name>_<zone-id>
              type: string
  SDXDeploymentDetails:
    type: object
    required:
      - nitro
      - target
    properties:
      target:
        type: string
        description: IP of managed SDX where Citrix ADC is going to be provisioned
        example: 10.102.106.110
      nitro:
        type: object
        description: Payload to create ADC instance which is to be sent to SDX
  ESXDeploymentDetails:
    type: object
    required:
      - networks
    properties:
      datacenter:
        type: string
        description: Name of the vCenter Datacenter
        example: Datacenter1
      cluster:
        type: string
        description: Name of the vCenter cluster under defined datacenter
        example: Cluster1
      esx_host:
        type: string
        description: Name of the vCenter-managed ESX host under defined cluster
        example: host-name
      datastore:
        type: string
        description: Name of the vCenter datastore under defined datacenter
        example: datastore1
      networks:
        $ref: '#/definitions/ESXNetworks'
  ProvisioningProfileObject:
    type: object
    properties:
      provisioning_profiles:
        $ref: '#/definitions/ProvisioningProfile'
  ProvisioningProfile:
    type: object
    required:
      - name
      - instance_type
      - site_id
    properties:
      name:
        type: string
        description: Name of the ProvisioningProfile
        example: ns_staging_aws_john
      instance_type:
        type: string
        description: Only NetScaler is supported as of now
        enum: [NetScaler, MASAgent, Gateway]
        example: NetScaler
      site_id:
        type: string
        description: Reference to MAS site which has location info where instance has to be provisioned.
        example: 123456-abcnsh-fabadfd21344
      platform_type:
        type: string
        description: Platform type
        enum: [aws, azure, sdx, esx]
        example: aws
      deployment_details:
          type: object
          properties:
            aws:
              $ref: '#/definitions/AWSDeploymentDetails'
            azure:
              $ref: '#/definitions/AzureDeploymentDetails'
            sdx:
              $ref: '#/definitions/SDXDeploymentDetails'
            esx:
              $ref: '#/definitions/ESXDeploymentDetails'
      mas_registration_details:
        type: object
        properties:
          mas_agent_id:
            type: string
            description: Reference to MAS Agent that has to be used in order to add and manage provisioned instance in MAS.
            example: abc-345-def-678
          access_profile_id:
            type: string
            description: Reference to Instance/Device Access Profile to be set for instance being provisioned.
            example: 111-222-333-444
      resource_capacity_details:
        type: object
        properties:
          aws_instance_type:
            type: string
            description: Parameter indicating memory/storage/vcpu's needed for booting up image.  (Applicable only for AWS)
            example: m4.xlarge
          azure_vm_size:
            type: string
            description: Parameter indicating memory/storage/vcpu's needed for booting up image.  (Applicable only for Azure)
            example: Standard_DS3_v2
      instance_capacity_details:
        type: object
        properties:
          aws_ami_id:
            type: string
            description: Reference to vpx image that should be used for provisioning instance. (Applicable only for AWS)
            example: ami-03a8726c
          azure_image_urn:
            type: string
            description: Reference to vpx image that should be used for provisioning instance. (Applicable only for Azure)
            example: citrix:netscalervpx-130:netscaler1000enterprise:130.47.24
          cloud_access_profile_id:
            type: string
            description: Permissions that has to be given to the instance that is provisioned using this provision profile (Applicable only for Azure)
          gateway_name:
            type: string
            description: The public gateway to which instance has to be associated with. This will give internet access to the instance (Applicable only for Azure)
          target_group_name:
            type: string
            description: Target group in the gateway mentioned in gateway_name to which instance has to associated (Applicable only for Azure)
          esx_template:
            type: string
            description: Name of the vCenter template created from Citrix ADC (Applicable only for ESX)
          pooled_license:
            $ref: '#/definitions/PooledLicenses'
      tags:
        description: Tags to be associated with instance being provisioned.
        type: array
        items:
          type: object
          properties:
            prop_key:
              description: Name of the tag key
              type: string
              example: Name
            prop_value:
              description: Value of the tag
              type: string
              example: ABCD

  ProvisioningProfileWithId:
    required:
        - "id"
    allOf:
      - properties:
          id:
            type: "string"
            example: 82308ca33-371c-4920-9162-910bd43204ba
      - $ref: '#/definitions/ProvisioningProfile'

  ProvisioningProfileObjectWithId:
    type: object
    properties:
      provisioning_profiles:
        $ref: '#/definitions/ProvisioningProfileWithId'

  ProvisioningProfileList:
    type: object
    properties:
      provisioning_profiles:
        type: array
        items:
          $ref: '#/definitions/ProvisioningProfileWithId'

  Tags:
    description: Tags to be associated with instance being provisioned.
    type: array
    items:
      type: object
      properties:
        prop_key:
          description: Name of the tag key
          type: string
          example: Name
        prop_value:
          description: Value of the tag
          type: string
          example: ABCD

  Instance:
    type: object
    required:
    - name
    - provisioning_profile_id
    properties:
      name:
        type: string
        description: Name of the instance to be provisioned.
        example: ns_instance_1
      provisioning_profile_id:
        type: string
        description: Provisioning Profile Id used to provision instance.
        example: abcdefgh-6c54-4b01-90e6-d290f1ee1234
      access_profile_id:
        type: string
        description: Reference to AccessProfile which has access details to provisioning platform.
        example: hghfghrt-454g-4yhnb-fdfsdd290f1ee1234
      tags:
        $ref: '#/definitions/Tags'

  InstanceResponse:
    type: object
    properties:
      id:
        description: Provisioning Id of the instance
        type: string
      name:
        description: Name of the instance
        type: string
      platform_type:
        description: Platform on which instance is provisioned
        type: string
      instance_type:
        description: Type of instance
        type: string
      access_profile_id:
        description: Access profile Id used to provision instance.
        type: string
      provisioning_profile_id:
        description: Provisioning Profile Id used to provision instance.
        type: string
      region:
        description: Cloud region where instance is provisioned
        type: string
      tags:
        $ref: '#/definitions/Tags'
      managed_device_id:
        description: managed device id from ADM device inventory
        type: string
      management_ip:
        description: management ip of the instance
        type: string
      cluster_id:
        description: cluster id from ADM device inventory if instance is part of cluster
        type: string
      ha_id:
        description: ha id from ADM device inventory if instance is part of ha profileIdParam
        type: string

  InstanceObject:
    type: object
    properties:
      instances:
        $ref: '#/definitions/Instance'

  InstanceResponseObject:
    type: object
    properties:
      instances:
        $ref: '#/definitions/InstanceResponse'

  InstanceList:
    type: object
    properties:
      instances:
        type: array
        items:
          $ref: '#/definitions/InstanceResponse'

  AsyncJobForInstanceResponseBody:
    title: AsyncJobForInstanceResponse
    type: object
    properties:
      instance:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of instance provisioning/deprovisioning
            type: string


  InstanceDetailsSummaryDescription:
    title: InstanceDetailsSummaryDescription
    type: object
    properties:
      id:
        description: Provisioning Id of the instance
        type: string
      name:
        description: Name of the instance
        type: string
      platform_type:
        description: Platform on which instance is provisioned
        type: string
      instance_type:
        description: Type of instance
        type: string
      access_profile_id:
        description: Access profile Id used to provision instance.
        type: string
      provisioning_profile_id:
        description: Provisioning Profile Id used to provision instance.
        type: string
      region:
        description: Cloud region where instance is provisioned
        type: string
      tags:
        description: Tags associated with instance.
        type: array
        items:
          type: object
          properties:
            prop_key:
              description: Name of the tag key
              type: string
            prop_value:
              description: Value of the tag
              type: string
      managed_device_id:
        description: managed device id from ADM device inventory
        type: string
      management_ip:
        description: management ip of the instance
        type: string
      cluster_id:
        description: cluster id from ADM device inventory if instance is part of cluster
        type: string
      ha_id:
        description: ha id from ADM device inventory if instance is part of ha profileIdParam
        type: string

  AsyncJobForClusterResponseBody:
    title: AsyncJobForClusterResponse
    type: object
    properties:
      cluster:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of cluster provisioning/deprovisioning
            type: string

  AsyncJobForRequestResponseBody:
    title: AsyncJobForRequestResponse
    type: object
    properties:
      request:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of request processing
            type: string

  CreateClusterRequestBody:
    title: CreateClusterRequest
    type: object
    properties:
      clusters:
        type: object
        properties:
          name:
            description: Name of the cluster
            type: string
          access_profile_id:
            description: Access profile Id used to provision cluster.
            type: string
          provisioning_profiles:
            description: Provisioning Profile Ids used to provision cluster instances.
            type: array
            items:
              type: string
          no_of_instances:
            description: Number of instances to be provisioned in cluster
            type: integer
          gateway_name:
            description: Azure NAT gateway name to be associated with instances in case of cluster in Azure platform_type
            type: string
          tags:
            description: Tags associated with cluster.
            type: array
            items:
              type: object
              properties:
                prop_key:
                  description: Name of the tag key
                  type: string
                prop_value:
                  description: Value of the tag
                  type: string
  GetClusterDetailsResponseBody:
    title: GetClusterDetailsResponse
    type: object
    properties:
      clusters:
        $ref: '#/definitions/ClusterDetailsSummaryDescription'
  GetAllClustersDetailsResponseBody:
    title: GetAllClustersDetailsResponse
    type: object
    properties:
      clusters:
        type: array
        items:
          $ref: '#/definitions/ClusterDetailsSummaryDescription'
  ClusterDetailsSummaryDescription:
    title: ClusterDetailsSummaryDescription
    type: object
    properties:
      id:
        description: Provisioning Id of the cluster
        type: string
      name:
        description: Name of the cluster
        type: string
      platform_type:
        description: Platform on which cluster is provisioned
        type: string
      access_profile_id:
        description: Access profile Id used to provision instance.
        type: string
      provisioning_profiles:
        description: Provisioning Profile Ids used to provision cluster instances.
        type: array
        items:
          type: string
      no_of_instances:
        description: Number of instances to be provisioned in cluster
        type: integer
      tags:
        description: Tags associated with instance.
        type: array
        items:
          type: object
          properties:
            prop_key:
              description: Name of the tag key
              type: string
            prop_value:
              description: Value of the tag
              type: string
      managed_device_id:
        description: managed device id from ADM device inventory
        type: string
      management_ip:
        description: management ip of the instance
        type: string

  AsyncJobForClusterNodeResponseBody:
    title: AsyncJobForClusterNodeResponse
    type: object
    properties:
      nodes:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of cluster node provisioning/deprovisioning
            type: string
  CreateClusterNodeRequestBody:
    title: CreateClusterNodeRequest
    type: object
    properties:
      nodes:
        type: object
        properties:
          provisioning_profile:
            description: Provisioning Profile Id used to provision cluster node.
            type: string
  GetClusterNodeDetailsResponseBody:
    title: GetClusterNodeDetailsResponse
    type: object
    properties:
      nodes:
        $ref: '#/definitions/InstanceDetailsSummaryDescription'
  GetAllClusterNodesDetailsResponseBody:
    title: GetAllClusterNodesDetailsResponse
    type: object
    properties:
      nodes:
        type: array
        items:
          $ref: '#/definitions/InstanceDetailsSummaryDescription'

  ha:
    type: object
    required:
    - name
    - provisioning_profiles
    - access_profile_id
    properties:
      name:
        type: string
        description: Name of the instance to be provisioned.
        example: ns_instance_1_staging_aws_frankfurt
      provisioning_profiles:
        type: array
        items:
          type: string
          description: Reference to ProvisioningProfiles of nodes which has deployment and platform specific details.
          example: abcdefgh-6c54-4b01-90e6-d290f1ee1234
      access_profile_id:
        type: string
        description: Reference to AccessProfile which has access details to provisioning platform.
        example: hghfghrt-454g-4yhnb-fdfsdd290f1ee1234
  haObject:
    type: object
    properties:
      ha:
        $ref: '#/definitions/ha'
  haAsyncResponse:
    type: object
    properties:
      ha:
        type: object
        properties:
          job_id:
            type: string
  haGetSingle:
    type: object
    properties:
      id:
        type: string
        description: Id of HA.
        example: 12d212bd6a7b1fc6df41271fd6c28ce2
      name:
        type: string
        description: Name of the instance to be provisioned.
        example: ns_instance_1_staging_aws_frankfurt
      provisioning_profiles:
        type: array
        items:
          type: string
          description: Reference to ProvisioningProfiles of nodes which has deployment and platform specific details.
          example: abcdefgh-6c54-4b01-90e6-d290f1ee1234
      access_profile_id:
        type: string
        description: Reference to AccessProfile which has access details to provisioning platform.
        example: hghfghrt-454g-4yhnb-fdfsdd290f1ee1234
      platform_type:
        type: string
        description: Type of the deployement platform.
        example: aws
      nodes:
        type: array
        items:
          type: object
          properties:
            id:
              type: string
              description: Id of HA node.
              example: 12d212bd6a7b1fc6df41271fd6c28ce2
            managed_device_id:
              type: string
              description: Managed device Id for Node in HA.
              example: 72019230-f6a4-47c9-aff2-71e96b054047
            management_ip:
              type: string
              description: Management-IP for node in HA.
              example: 12.0.3.160
  haGetSingleResponse:
    type: object
    properties:
      ha:
        "$ref": "#/definitions/haGetSingle"
  haGetResponse:
    type: object
    properties:
      ha:
        type: array
        items:
          "$ref": "#/definitions/haGetSingle"

  Agent:
    type: object
    required:
    - name
    - provisioning_profile_id
    properties:
      name:
        type: string
        description: Name of the agent to be provisioned.
        example: ns_agent_1
      provisioning_profile_id:
        type: string
        description: Provisioning Profile Id used to provision agent.
        example: abcdefgh-6c54-4b01-90e6-d290f1ee1234
      access_profile_id:
        type: string
        description: Reference to AccessProfile which has access details to provisioning platform.
        example: hghfghrt-454g-4yhnb-fdfsdd290f1ee1234
      tags:
        $ref: '#/definitions/Tags'

  AgentResponse:
    type: object
    properties:
      id:
        description: Provisioning Id of the agent
        type: string
      name:
        description: Name of the agent
        type: string
      platform_type:
        description: Platform on which agent is provisioned
        type: string
      agent_type:
        description: Type of agent
        type: string
      access_profile_id:
        description: Access profile Id used to provision agent.
        type: string
      provisioning_profile_id:
        description: Provisioning Profile Id used to provision agent.
        type: string
      region:
        description: Cloud region where agent is provisioned
        type: string
      tags:
        $ref: '#/definitions/Tags'
      managed_device_id:
        description: managed device id from ADM device inventory
        type: string
      management_ip:
        description: management ip of the agent
        type: string
      cluster_id:
        description: cluster id from ADM device inventory if agent is part of cluster
        type: string
      ha_id:
        description: ha id from ADM device inventory if agent is part of ha profileIdParam
        type: string

  AgentObject:
    type: object
    properties:
      agents:
        $ref: '#/definitions/Agent'

  AgentResponseObject:
    type: object
    properties:
      agents:
        $ref: '#/definitions/AgentResponse'

  AgentList:
    type: object
    properties:
      agents:
        type: array
        items:
          $ref: '#/definitions/AgentResponse'

  AsyncJobForAgentResponseBody:
    title: AsyncJobForAgentResponse
    type: object
    properties:
      agent:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of agent provisioning/deprovisioning
            type: string


  Gateway:
    type: object
    required:
    - name
    - provisioning_profile_id
    - access_profile_id
    properties:
      name:
        type: string
        description: Name of the gateway to be provisioned.
        example: ns_gateway_1
      provisioning_profile_id:
        type: string
        description: Provisioning Profile Id used to provision gateway.
        example: abcdefgh-6c54-4b01-90e6-d290f1ee1234
      access_profile_id:
        type: string
        description: Reference to AccessProfile which has access details to provisioning platform.
        example: hghfghrt-454g-4yhnb-fdfsdd290f1ee1234
      id:
        type: string
        description: Gateway-id

  GatewayResponse:
    type: object
    properties:
      id:
        description: Provisioning Id of the gateway
        type: string
      name:
        description: Name of the gateway
        type: string
      platform_type:
        description: Platform on which gateway is provisioned
        type: string
      access_profile_id:
        description: Access profile Id used to provision gateway.
        type: string
      provisioning_profile_id:
        description: Provisioning Profile Id used to provision gateway.
        type: string
      target_groups:
        description: s
        type: object
      frontend_ip:
        description: s
        type: string

  GatewayObject:
    type: object
    properties:
      gateways:
        $ref: '#/definitions/Gateway'

  GatewayResponseObject:
    type: object
    properties:
      gateways:
        $ref: '#/definitions/GatewayResponse'

  GatewayList:
    type: object
    properties:
      gateways:
        type: array
        items:
          $ref: '#/definitions/GatewayResponse'

  AsyncJobForGatewayResponseBody:
    title: AsyncJobForGatewayResponse
    type: object
    properties:
      gateway:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of gateway provisioning/deprovisioning
            type: string


  Ipset:
    type: object
    required:
    - md_id
    - network_type
    - allot_public_ip
    properties:
      allot_ipset:
        type: string
        description: Whether to allocate ipset
        example: "true"
        enum: ["true", "false"]
      is_for_private_app:
        type: string
        description: Whether it is a private app
        example: "true"
        enum: ["true", "false"]
      allot_public_ip:
        type: string
        description: Whether to allocate public-ip for ipset
        example: "true"
        enum: ["true", "false"]
      ips_count:
        type: integer
        description: Number of ips in ipset
        example: 2
      id:
        type: string
        description: Name for ipset
        example: "demo-app-ipset"
      md_id:
        type: string
        description: Id for managed-device to which ipset will be associated
        example: "abcd"
      network_type:
        type: string
        description: Network type
        example: "client"
        enum: ["server", "client", "management"]

  IpsetResponse:
    allOf:
      - properties:
          ips:
            type: array
            items:
              type: object
              properties:
                md_id:
                  type: string
                public_ip:
                  type: string
                private_ip:
                  type: string
      - $ref: '#/definitions/Ipset'

  IpsetObject:
    type: object
    properties:
      ipsets:
        $ref: '#/definitions/Ipset'

  IpsetResponseObject:
    type: object
    properties:
      ipsets:
        $ref: '#/definitions/IpsetResponse'

  IpsetList:
    type: object
    properties:
      ipsets:
        type: array
        items:
          $ref: '#/definitions/IpsetResponse'

  AsyncJobForIpsetResponseBody:
    title: AsyncJobForIpsetResponse
    type: object
    properties:
      ipsets:
        type: object
        properties:
          job_id:
            description: job_id to track the progress of ipset provisioning/deprovisioning
            type: string

  UploadConfig:
    type: object
    required:
    - config_name
    - config_contents
    properties:
      config_name:
        type: string
        description: Name for config
        example: "abc.conf"
      config_contents:
        type: string
        description: Config contents

  UploadConfigObject:
    type: object
    properties:
      uploadconfig:
        $ref: '#/definitions/UploadConfig'

  UploadConfigContentsResponse:
    type: object
    properties:
      config:
        type: string

  Jobs:
    type: object
    properties:
      job:
        type: object
        properties:
          reason:
            type: string
          status:
            type: string
            enum: ["completed", "failed", "inprogress"]
          progress_info:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  example: "ce3f3018-637b-4e70-b022-a003d3f9"
                start_time:
                  type: integer
                  example: 1583141806
                end_time:
                  type: integer
                  example: 1583141852
                message:
                  type: string
                  example: "Launched Citrix ADC instance Demo1 on aws."
                status:
                  type: string
                  enum: ["inprogress", "failed", "success", "completed"]
                is_last:
                  type: string
                  enum: ["true", "false"]
                  example: "false"
                task_id:
                  type: integer
                  example: 1

  iamcfts:
    type: object
    properties:
      iamcft:
        type: object
