- Fixed error in the url for application groups

#%RAML 0.8
title: VMware NSX for vSphere
baseUri: https://{nsxmanager}/api
baseUriParameters:
  nsxmanager:
    displayName: nsxManager
    description: This is the hostname or IP address of the NSX Manager
version: 6.2.3
securedBy: [basic]
schemas:
  - advancedConfigUpdate: !include schemas/advancedConfigUpdate.xsd
    allUsersUpdate: !include schemas/allUsersUpdate.xsd
    applianceMgrBackupSettingsUpdate: !include schemas/applianceMgrBackupSettingsUpdate.xsd
    applianceUpdate: !include schemas/applianceUpdate.xsd
    applicationProfilesCreate: !include schemas/applicationProfilesCreate.xsd
    applicationProfileUpdate: !include schemas/applicationProfileUpdate.xsd
    appRulesCreate: !include schemas/appRulesCreate.xsd
    appRuleUpdate: !include schemas/appRuleUpdate.xsd
    arpMAC: !include schemas/arpMAC.xsd
    authSettingsUpdate: !include schemas/authSettingsUpdate.xsd
    autoConfigUpdate: !include schemas/autoConfigUpdate.xsd
    bridingUpdate: !include schemas/bridingUpdate.xsd
    certificateCSRCreate: !include schemas/certificateCSRCreate.xsd
    certificateSelfSignedCreate: !include schemas/certificateSelfSignedCreate.xsd
    clientConfigUpdate: !include schemas/clientConfigUpdate.xsd
    cliSettingsUpdate: !include schemas/cliSettingsUpdate.xsd
    clusterUpdate: !include schemas/clusterUpdate.xsd
    controller: !include schemas/controller.xsd
    controllerSyslog: !include schemas/controllerSyslog.xsd
    crlScopeCreate: !include schemas/crlScopeCreate.xsd
    csrCreate: !include schemas/csrCreate.xsd
    dataCollectionKillSwitch: !include schemas/dataCollectionKillSwitch.xsd
    dataCollectionVMCreate: !include schemas/dataCollectionVMCreate.xsd
    defaultFirewallPolicyUpdate: !include schemas/defaultFirewallPolicyUpdate.xsd
    dfwConfigImport: !include schemas/dfwConfigImport.xsd
    dfwDraftsCreate: !include schemas/dfwDraftsCreate.xsd
    dfwDraftUpdate: !include schemas/dfwDraftUpdate.xsd
    dfwIPFixUpdate: !include schemas/dfwIPFixUpdate.xsd
    dfwPerformanceUpdate: !include schemas/dfwPerformanceUpdate.xsd
    dfwSection: !include schemas/dfwSection.xsd
    dfwThresholdsUpdate: !include schemas/dfwThresholdsUpdate.xsd
    dfwRule: !include schemas/dfwRule.xsd
    dhcpRelayUpdate: !include schemas/dhcpRelayUpdate.xsd
    dhcpUpdate: !include schemas/dhcpUpdate.xsd
    dhcpPoolCreate: !include schemas/dhcpPoolCreate.xsd
    dhcpStaticBindingCreate: !include schemas/dhcpStaticBindingCreate.xsd
    dlpIncludeSecGroupUpdate: !include schemas/dlpIncludeSecGroupUpdate.xsd
    dlpEnableRegulation: !include schemas/dlpEnableRegulation.xsd
    dlpExcludeArea: !include schemas/dlpExcludeArea.xsd
    dlpExcludeSecGroupUpdate: !include schemas/dlpExcludeSecGroupUpdate.xsd
    dlpFileFiltersUpdate: !include schemas/dlpFileFiltersUpdate.xsd
    dlpRegexClassificationValue: !include schemas/dlpRegexClassificationValue.xsd
    dlpScanning: !include schemas/dlpScanning.xsd
    dnsUpdate: !include schemas/dnsUpdate.xsd
    domainCreate: !include schemas/domainCreate.xsd
    edgeDnsUpdate: !include schemas/edgeDnsUpdate.xsd
    edgeNatConfig: !include schemas/edgeNatConfig.xsd
    edgeNatRulesCreate: !include schemas/edgeNatRulesCreate.xsd
    edgeNatRuleUpdate: !include schemas/edgeNatRuleUpdate.xsd
    eLogServerCreate: !include schemas/eLogServerCreate.xsd
    firewallRuleUpdate: !include schemas/firewallRuleUpdate.xsd
    firewallRulesCreate: !include schemas/firewallRulesCreate.xsd
    flowsExcludeCreate: !include schemas/flowsExcludeCreate.xsd
    globalFirewallConfigUpdate: !include schemas/globalFirewallConfigUpdate.xsd
    hierarchyCreate: !include schemas/hierarchyCreate.xsd
    highAvailabilityCreate: !include schemas/highAvailabilityCreate.xsd
    installPackagesCreate: !include schemas/installPackagesCreate.xsd
    installPackageUpdate: !include schemas/installPackageUpdate.xsd
    interfacesCreate: !include schemas/interfacesCreate.xsd
    ipAddressRequest: !include schemas/ipAddressRequest.xsd
    ipPool: !include schemas/ipPool.xsd
    ipPoolUpdate: !include schemas/ipPoolUpdate.xsd
    ipSet: !include schemas/ipSet.xsd
    layer3RedirectSectionsCreate: !include schemas/layer3RedirectSectionsCreate.xsd
    layer3RedirectSectionUpdate: !include schemas/layer3RedirectSectionUpdate.xsd
    layoutUpdate: !include schemas/layoutUpdate.xsd
    lbMonitorsCreate: !include schemas/lbMonitorsCreate.xsd
    lbMonitorUpdate: !include schemas/lbMonitorUpdate.xsd
    ldapServerCreate: !include schemas/ldapServerCreate.xsd
    loadBalancerConfig: !include schemas/loadBalancerConfig.xsd
    logicalSwitchCreate: !include schemas/logicalSwitchCreate.xsd
    logicalSwitchVmAttach: !include schemas/logicalSwitchVmAttach.xsd
    logicalSwitchConnCheck: !include schemas/logicalSwitchConnCheck.xsd
    logicalSwitchPing: !include schemas/logicalSwitchPing.xsd
    macSetCreateUpdate: !include schemas/macSetCreateUpdate.xsd
    mgmtInterfaceUpdate: !include schemas/mgmtInterfaceUpdate.xsd
    netExtipPoolsCreate: !include schemas/netExtipPoolsCreate.xsd
    netExtipPoolsUpdate: !include schemas/netExtipPoolsUpdate.xsd
    nsxControllerPasswordUpdate: !include schemas/nsxControllerPasswordUpdate.xsd
    nsxEdgesCreate: !include schemas/nsxEdgesCreate.xsd
    nsxEdgeDnsUpdate: !include schemas/nsxEdgeDnsUpdate.xsd
    nsxEdgeUpdate: !include schemas/nsxEdgeUpdate.xsd
    nsxEdgeFirewallConfigUpdate: !include schemas/nsxEdgeFirewallConfigUpdate.xsd
    nwFabricConfig: !include schemas/nwFabricConfig.xsd
    nwfabricClustersUpdate: !include schemas/nwfabricClustersUpdate.xsd
    nwfabricHostsUpdate: !include schemas/nwfabricHostsUpdate.xsd
    poolsCreate: !include schemas/poolsCreate.xsd
    poolUpdate: !include schemas/poolUpdate.xsd
    privateNetworksCreate: !include schemas/privateNetworksCreate.xsd
    privateNetworkUpdate: !include schemas/privateNetworkUpdate.xsd
    routingBGPUpdate: !include schemas/routingBGPUpdate.xsd
    routingConfigUpdate: !include schemas/routingConfigUpdate.xsd
    routingConfigStaticUpdate: !include schemas/routingConfigStaticUpdate.xsd
    routingGlobalConfigUpdate: !include schemas/routingGlobalConfigUpdate.xsd
    routingISISUpdate: !include schemas/routingISISUpdate.xsd
    routingOSPFUpdate: !include schemas/routingOSPFUpdate.xsd
    rulesCreate: !include schemas/rulesCreate.xsd
    ruleUpdate: !include schemas/ruleUpdate.xsd
    scriptCreate: !include schemas/scriptCreate.xsd
    scriptFileIDUpdate: !include schemas/scriptFileIDUpdate.xsd
    scriptUpdate: !include schemas/scriptUpdate.xsd
    secGroupGlobalCreate: !include schemas/secGroupGlobalCreate.xsd
    secGroupBulkObjectUpdate: !include schemas/secGroupBulkObjectUpdate.xsd
    securityFabricCreate: !include schemas/securityFabricCreate.xsd
    securityPolicyCreate: !include schemas/securityPolicyCreate.xsd
    securityPolicyIDUpdate: !include schemas/securityPolicyIDUpdate.xsd
    securityTagCreate: !include schemas/securityTagCreate.xsd
    serverSettingsUpdate: !include schemas/serverSettingsUpdate.xsd
    serviceGroupsCreate: !include schemas/serviceGroupsCreate.xsd
    serviceGroupUpdate: !include schemas/serviceGroupUpdate.xsd
    servicesScopeCreate: !include schemas/servicesScopeCreate.xsd
    serviceUpdate: !include schemas/serviceUpdate.xsd
    serviceUpgrade: !include schemas/serviceUpgrade.xsd
    solutionIPPortSet: !include schemas/solutionIPPortSet.xsd
    spoofGuardPoliciesCreate: !include schemas/spoofGuardPoliciesCreate.xsd
    spoofGuardPolicyApprove: !include schemas/spoofGuardPolicyApprove.xsd
    spoofGuardPolicyUpdate: !include schemas/spoofGuardPolicyUpdate.xsd
    sslVPNUpdate: !include schemas/sslVPNUpdate.xsd
    ssoConfig: !include schemas/ssoConfig.xsd
    syslogUpdate: !include schemas/syslogUpdate.xsd
    systemLocaleUpdate: !include schemas/systemLocaleUpdate.xsd
    systemSyslogServerUpdate: !include schemas/systemSyslogServerUpdate.xsd
    systemTimeUpdate: !include schemas/systemTimeUpdate.xsd
    universalSyncConfigurationManagersThumbprintUpdate: !include schemas/universalSyncConfigurationManagersThumbprintUpdate.xsd
    userRoleMgmtCreate: !include schemas/userRoleMgmtCreate.xsd
    userRoleMgmtUpdate: !include schemas/userRoleMgmtUpdate.xsd
    usersCreate: !include schemas/usersCreate.xsd
    usersUpdate: !include schemas/usersUpdate.xsd
    vcConfig: !include schemas/vcConfig.xsd
    vdsContext: !include schemas/vdsContext.xsd
    vdnSegment: !include schemas/vdnSegment.xsd
    vdnSegmentUpdate: !include schemas/vdnSegmentUpdate.xsd
    vdnMulticast: !include schemas/vdnMulticast.xsd
    vdnMulticastUpdate: !include schemas/vdnMulticastUpdate.xsd
    vdnScopeCreate: !include schemas/vdnScopeCreate.xsd
    vdnScopeEdit: !include schemas/vdnScopeEdit.xsd
    vdnScopeUpdate: !include schemas/vdnScopeUpdate.xsd
    virtualServersCreate: !include schemas/virtualServersCreate.xsd
    vShieldVendorCreate: !include schemas/vShieldVendorCreate.xsd
    vShieldSolutionCreate: !include schemas/vShieldSolutionCreate.xsd
    vShieldSolutionActivate: !include schemas/vShieldSolutionActivate.xsd
    webResourcesCreate: !include schemas/webResourcesCreate.xsd
securitySchemes:
  - basic:
      type: Basic Authentication
/2.0/vdn/switches:
  displayName: vdsManage
  description: This collection of methods are used to configure and prepare the VDS's for the use with NSX
  post:
    displayName: vdsPrepare
    description: prepares a pre-configured vds with teaming and MTU options, MTU must be 1600 or higher
    body:
      application/xml:
        example: |
          <vdsContext>
            <switch>
              <objectId></objectId>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <revision></revision>
                <objectTypeName></objectTypeName>
            </switch>
            <teaming></teaming>
            <mtu></mtu>
          </vdsContext>
        schema: vdsContext
  get:
    displayName: vdsList
    description: Lists all vds's
  /datacenter/{datacenterID}:
    displayName: vdsInDc
    description: Lists all VDS's in a specified vSphere Datacenter Object
    uriParameters:
      datacenterID:
          required: true
          displayName: datacenterID
          description: A valid Datacenter Id (e.g. datacenter-4)
    get:
      displayName: vdsListInDc
      description: Lists all VDS's in a specified vSphere Datacenter Object
  /{vdsId}:
    displayName: vds
    description: Retrieve a specific vds by specific switchId (e.g. dvs-26)
    uriParameters:
      vdsId:
          required: true
          displayName: switchId
          description: A valid switch (VDS) Id (e.g. dvs-26)
    get:
      displayName: vdsShow
      description: Retrieve a specific vds by specific switchId (e.g. dvs-26)
    delete:
      displayName: vdsDelete
      description: Delete a specific vds by specific switchId (e.g. dvs-26)
/2.0/vdn/config:
  displayName: vdnConfig
  description: Configurations of Segment ID's and Multicast Ranges for logical switches
  /segments:
    displayName: vdnSegmentPools
    description: Operations on Segment ID's (VXLAN Idd)
    post:
      displayName: vdnSegmentPoolAdd
      description: Add a segment ID Pool
      queryParameters:
          isUniversal:
            displayName: isUniversal
            description: Set to "true" when creating a universal VNI pool.
            type: boolean
            required: false
      body:
        application/xml:
          example: |
            <segmentRange>
              <name></name>
              <begin></begin>
              <end></end>
            </segmentRange>
          schema: vdnSegment
    get:
      displayName: vdnSegmentPoolList
      description: Lists all Segment ID Pools
    /{segmentPoolId}:
      displayName: vdnSegmentPool
      description: Operations on individual segment ID Pool
      uriParameters:
        segmentPoolId:
          required: true
          displayName: segmentPoolId
          description: A valid segment Pool Id
      get:
        displayName: vdnSegmentPoolShow
        description: Retrieve details of an individual segment ID Pool
      put:
        displayName: vdnSegmentPoolChange
        description: Update an individual segment ID Pool
        body:
          application/xml:
            example: |
              <segmentRange>
                <end></end>
                <name></name>
              </segmentRange>
            schema: vdnSegmentUpdate
      delete:
        displayName: vdnSegmentPoolDelete
        description: Delete an individual segment ID Pool
  /multicasts:
    displayName: vdnMulticastPools
    description: Operations on multicast range Pools for logical switches
    post:
      displayName: vdnMulticastPoolAdd
      description: Adds a multicast range for logical switches
      queryParameters:
          isUniversal:
            displayName: isUniversal
            description: Set to "true" when creating a universal multicast range.
            type: boolean
            required: false
      body:
        application/xml:
          example: |
            <multicastRange>
              <name></name>
              <desc></desc>
              <begin></begin>
              <end></end>
            </multicastRange>
          schema: vdnMulticast
    get:
      displayName: vdnMulticastPoolList
      description: List all configured vdn Multicast Pools
    /{multicastAddresssRangeId}:
      displayName: vdnMulticastPool
      description: Operations in individual multicast range Pools for logical switches
      uriParameters:
        multicastAddresssRangeId:
          required: true
          displayName: multicastAddresssRangeId
          description: A valid multicast Pool range Id
      get:
        displayName: vdnMulticastPoolShow
        description: Retrieve details of an individual Multicast range Pool
      put:
        displayName: vdnMulticastPoolChange
        description: Update an individual Multicast range Pool
        body:
          application/xml:
            example: |
              <multicastRange>
                <name></name>
                <desc></desc>
                <end></end>
              </multicastRange>
            schema: vdnMulticastUpdate
      delete:
        displayName: vdnSegmentPoolDelete
        description: Delete an individual Multicast range Pool
  /vxlan/udp/port:
    displayName: vdnConfigUDP
    description: View configured UDP port for VXLAN
    get:
      displayName: vdnConfigUDPShow
      description: View configured UDP port for VXLAN
    /{portNumber}:
      displayName: vdnConfigUDPUpdate
      description: Updates the UDP Port used for VXLAN
      uriParameters:
        portNumber:
          required: true
          displayName: portNumber
          description: A valid UDP Port for VXLAN
      put:
        displayName: vdnConfigUDPUpdate
        description: Updates the UDP Port used for VXLAN
  /resources/allocated:
    displayName: allocatedResources
    description: Query allocated resources
    get:
      displayName: allocatedResourcesRead
      description: Retrieve a list of resources allocated
      queryParameters:
        type:
          displayName: type
          description: set to "segmentId" or "multicastAddress"
        pagesize:
          displayName: pagesize
          description: Optional; limits the maximum number of entries returned. Valid range is 1-1024, default is 256
        startindex:
          displayName: startindex
          description: Optional; specifies the starting point for retrieval. If not specified, resources are retrieved from the beginning
/2.0/vdn/scopes:
  displayName: vdnScopes
  description: Read all scopes (transport zones), or create a new scope (Transport Zone)
  get:
    displayName: vdnScopesList
    description: Retrieve a list of all known VDN Scopes / Transport Zones
  post:
    displayName: vdnScopeCreate
    description: Create a new Transport Zone. Note that you can only add one initial cluster when creating the TZ.
    queryParameters:
      isUniversal:
        displayName: isUniversal
        description: Set to "true" when creating a universal transport zone.
        type: boolean
        required: false
    body:
      application/xml:
        example: |
          <vdnScope>
            <name></name>
            <clusters>
              <cluster>
                <cluster>
                  <objectId></objectId>
                </cluster>
              </cluster>
            </clusters>
            <controlPlaneMode></controlPlaneMode>
            <description></description>
          </vdnScope>
        schema: vdnScopeCreate
  /{scopeId}:
    displayName: vdnScope
    description: Read, update and delete an existing scope (transport Zone)
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: A valid scope Id
    get:
      displayName: vdnScopeProperties
      description: Retrieve the properties of an existing network scope
    post:
      displayName: vdnScopeChange
      description: Updates a transport zone, you can add a cluster to or delete a cluster from a transport zone
      queryParameters:
        action:
          displayName: action
          description: Mandatory queryParameter, use 'expand' to add a cluster, or 'shrink' to remove a cluster from the TZ
          required: true
      body:
        application/xml:
          example: |
            <vdnScope>
              <objectId></objectId>
              <clusters>
                <cluster>
                  <cluster>
                    <objectId></objectId>
                  </cluster>
                </cluster>
              </clusters>
            </vdnScope>
          schema: vdnScopeEdit
    delete:
      displayName: vdnScopeDelete
      description: delete a transport zone
    /attributes:
      displayName: vdnScopeAttribUpdate
      description: update the attributes of a transport zone (e.g. Name, description)
      put:
        displayName: vdnScopeAttribUpdate
        description: update the attributes of a transport zone (e.g. Name, description)
        body:
          application/xml:
            example: |
              <vdnScope>
                <clusters>
                  <cluster>
                    <cluster>
                      <objectId></objectId>
                    </cluster>
                  </cluster>
                </clusters>
                <objectId></objectId>
                <name></name>
                <description></description>
                <controlPlaneMode></controlPlaneMode>
              </vdnScope>
            schema: vdnScopeUpdate
    /conn-check/multicast:
      displayName: vdnScopeConnCheck
      description: Test multicast group connectivity in a transport zone
      post:
        displayName: vdnScopeConnCheck
        description: Test multicast group connectivity in a transport zone
        body:
          application/xml:
/2.0/vdn/scopes/{scopeId}/virtualwires:
  displayName: logicalSwitches
  description: Create and List operations of logical switches inside a Transport Zone (scope)
  uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: A valid scope Id
  get:
    displayName: logicalSwitchList
    description: Lists all logical Switches in the Transport Zone (Scope)
  post:
    displayName: logicalSwitchCreate
    description: creates a logicalSwitch
    body:
      application/xml:
        example: |
          <virtualWireCreateSpec>
            <name></name>
            <description></description>
            <tenantId></tenantId>
            <controlPlaneMode></controlPlaneMode>
          </virtualWireCreateSpec>
        schema: logicalSwitchCreate
/2.0/vdn/virtualwires:
  displayName: logicalSwitchesGlobal
  description: List Operations of logicalSwitches in all transport Zones (scope)
  get:
    displayName: logicalSwitchesRead
    description: List all logicalSwitches
    queryParameters:
      startIndex:
        displayName: startIndex
        description: optional; specify starting point for retrieving logical switches
        default: 0
      pageSize:
        displayName: pageSize
        description: optional; limit the max number of entries returned. Valid range is 1-1024
        default: 20
  /vm/vnic:
    displayName: logicalSwitchVmAttach
    description: Migrate a Virtual Maschine vnic to a logical switch
    post:
      displayName: logicalSwitchVmAttach
      description: Migrate a Virtual Maschine vnic to a logical switch
      body:
        application/xml:
          example: |
            <com.vmware.vshield.vsm.inventory.dto.VnicDto>
              <objectId></objectId>
              <vnicUuid></vnicUuid>
              <portgroupId></portgroupId>
            </com.vmware.vshield.vsm.inventory.dto.VnicDto>
          schema: logicalSwitchVmAttach
  /{virtualWireID}:
    displayName: logicalSwitch
    description: Retrieves the configuration of an individual logical switch
    uriParameters:
      virtualWireID:
        required: true
        displayName: virtualWireID
        description: A logical switch id, e.g. virtualwire-1002
    get:
      displayName: logicalSwitchShow
      description: Retrieves the configuration of an individual logical switch
    put:
      displayName: logicalSwitchUpdate
      description: Update a logical switch, possible updates are name changes & Controlplane Mode
    delete:
      displayName: logicalSwitchDelete
      description: Delete a logical switch
    /conn-check/multicast:
      displayName: logicalSwitchConnCheck
      description: Test multicast group connectivity in logical switch
      post:
        displayName: logicalSwitchConnCheck
        description: Test multicast group connectivity in logical switch
        body:
          application/xml:
            example: |
              <testParameters>
                <gateway></gateway>
                <packetSizeMode></packetSizeMode>
                <packetSize></packetSize>
                <sourceHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </sourceHost>
                <destinationHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </destinationHost>
              </testParameters>
            schema: logicalSwitchConnCheck
    /conn-check/p2p:
      displayName: logicalSwitchPing
      description: Perform point to point connectivity test between two hosts across which a logical switch spans
      post:
        displayName: logicalSwitchPing
        description: Perform point to point connectivity test between two hosts across which a logical switch spans
        body:
          application/xml:
            example: |
              <testParameters>
                <gateway></gateway>
                <packetSizeMode></packetSizeMode>
                <packetSize></packetSize>
                <sourceHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </sourceHost>
                <destinationHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </destinationHost>
              </testParameters>
            schema: logicalSwitchPing
/2.0/xvs/networks/{ID}/features:
  displayName: arpMAC
  description: Working with ARP suppression and MAC learning for logical switches
  uriParameters:
    ID:
      required: true
      displayName: ID
      description: dvpg MoID or virtual wire ID
  get:
    displayName: arpMACRead
    description: Query ARP suppression and MAC learning information
  put:
    displayName: arpMAC
    description: Enable or disable ARP suppression and MAC learning
    body:
      application/xml:
        example: |
          <networkFeatureConfig>
            <ipDiscoveryConfig>
              <enabled></enabled>
            </ipDiscoveryConfig>
            <macLearningConfig>
              <enabled></enabled>
            </macLearningConfig>
          </networkFeatureConfig>
        schema: arpMAC
/2.0/vdn/controller:
  displayName: nsxControllers
  description: Working with NSX controllers
  post:
    displayName: nsxControllerCreate
    description: Add a new controller on a specified cluster. Request without body to upgrade controller cluster
    body:
      application/xml:
        example: |
          <controllerSpec>
            <name></name>
            <description></description>
            <ipPoolId></ipPoolId>
            <resourcePoolId></resourcePoolId>
            <hostId></hostId>
            <datastoreId></datastoreId>
            <deployType></deployType>
            <networkId></networkId>
            <password></password>
          </controllerSpec>
        schema: controller
  get:
    displayName: nsxControllersRead
    description: Retrieve details and runtime status for all controllers
  /upgrade-available:
    displayName: nsxControllerUpgradeAvailability
    description: Query controller upgrade availability
    get:
      displayName: nsxControllerUpgradeAvailability
      description: Query controller upgrade availability
  /progress/{jobId}:
    displayName: nsxControllerJob
    description: Status of controller creation or removal
    uriParameters:
      jobId:
        required: true
        displayName: jobId
        description: Specified job Id
    get:
      displayName: nsxControllerJobRead
      description: Retrieve status of controller creation or removal. Returns percentage indication of job progress
  /{controllerId}:
    displayName: nsxController
    description: Working with specified controller
    uriParameters:
      controllerId:
        required: true
        displayName: controllerId
        description: Specified controller
    delete:
      displayName: nsxControllerDelete
      description: Delete NSX controller. When deleting last controller from cluster, forceRemoval must be set to true
      queryParameters:
        forceRemoval:
          type: boolean
          required: true
          displayName: forceRemoval
          description: Force removal of controller (true/false)
    /techsupportlogs:
      displayName: nsxControllerLogs
      description: Controller logs
      get:
        displayName: nsxControllerLogsRead
        description: Retrieve controller logs
    /syslog:
      displayName: nsxControllerSyslog
      description: Syslog exporter on controller node
      post:
        displayName: nsxControllerSyslogCreate
        description: Add controller syslog exporter on the controller
        body:
          application/xml:
            example: |
              <controllerSyslogServer>
                <syslogServer></syslogServer>
                <port></port>
                <protocol></protocol>
                <level></level>
              </controllerSyslogServer>
            schema: controllerSyslog
      get:
        displayName: nsxControllerSyslogRead
        description: Retrieve details about the syslog exporter on the controller
      delete:
        displayName: nsxControllerSyslogDelete
        description: Delete the syslog exporter
    /snapshot:
      displayName: nsxControllerSnapshot
      description: Take a snapshot of the control cluster from the specified controller node
      get:
        displayName: nsxControllerSnapshot
        description: Take a snapshot of the control cluster from the specified controller node
  /cluster:
    displayName: nsxControllerCluster
    description: Cluster configuration
    get:
      displayName: nsxControllerClusterRead
      description: Retrieve cluster-wise configuration information for controller
    put:
      displayName: nsxControllerClusterUpdate
      description: Modify cluster configuration information for controller
      body:
        application/xml:
          example: |
            <controllerConfig>
              <sslEnabled></sslEnabled>
            </controllerConfig>
          schema: clusterUpdate
  /credential:
    displayName: nsxControllerPassword
    description: Change the NSX controller password
    put:
      displayName: nsxControllerPasswordUpdate
      description: Change the NSX controller password
      body:
        application/xml:
          example: |
            <controllerCredential>
              <apiPassword></apiPassword>
            </controllerCredential>
          schema: nsxControllerPasswordUpdate
/2.0/services/application/scope/{scopeId}:
  displayName: servicesScope
  description: Working with services on a scope
  uriParameters:
    scopeId:
      required: true
      displayName: scopeId
      description: Can be "globalroot-0", "universalroot-0" or datacenterId in upgrade use cases.
  get:
    displayName: servicesScopeRead
    description: List services that have been created on the scope
  post:
    displayName: servicesScopeCreate
    description: Create a new service on the specified scope
    body:
      application/xml:
        example: |
          <application>
            <objectId></objectId>
            <type>
              <typeName/>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <element>
              <applicationProtocol>mandatory</applicationProtocol>
              <value>mandatory</value>
            </element>
          </application>
        schema: servicesScopeCreate
/2.0/services/application/{applicationId}:
  displayName: service
  description: Working with a specified service
  uriParameters:
    applicationId:
      required: true
      displayName: applicationId
      description: Specified as returned by a servicesScope POST call
  get:
    displayName: serviceRead
    description: Retrieve details about the specified service
  put:
    displayName: serviceUpdate
    description: Modify the name, description, applicationProtocol, or port value of a service
    body:
      application/xml:
        example: |
          <application>
            <objectId></objectId>
            <type>
              <typeName></typeName>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <element>
              <applicationProtocol></applicationProtocol>
              <value></value>
            </element>
          </application>
        schema: serviceUpdate
  delete:
    displayName: serviceDelete
    description: Delete the specified service
    queryParameters:
      force:
        type: boolean
        required: false
        displayName: force
        description: Indicates if the delete should be forced or unforced. The default is unforced (false)
/2.0/services/applicationgroup:
  displayName: applicationgroup
  description: Operations on Application Groups
  /scope/{scopeId}:
    displayName: serviceGroups
    description: Working with service groups
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: The scopeId can be "globalroot-0", "universalroot-0" or datacenterId in upgrade use cases
    post:
      displayName: serviceGroupsCreate
      description: Create a new service group on the specified scope
      body:
        application/xml:
          example: |
            <applicationGroup>
              <description></description>
              <name></name>
              <revision></revision>
              <inheritanceAllowed></inheritanceAllowed>
            </applicationGroup>
          schema: serviceGroupsCreate
    get:
      displayName: serviceGroupsRead
      description: Retrieve a list of service groups that have been created on the scope
  /{applicationgroupId}:
    displayName: serviceGroup
    description: Working with an individual service group
    uriParameters:
      applicationgroupId:
        required: true
        displayName: applicationgroupId
        description: Application group ID
    get:
      displayName: serviceGroupRead
      description: Retrieve details about a service group
    put:
      displayName: serviceGroupUpdate
      description: Modify the name, description, applicationProtocol, or port value of a service group
      body:
        application/xml:
          example: |
            <applicationGroup>
              <objectId></objectId>
              <type>
                <typeName></typeName>
              </type>
              <name></name>
              <description></description>
              <revision></revision>
              <objectTypeName></objectTypeName>
              <scope>
                <id></id>
                <objectTypeName></objectTypeName>
                <name></name>
              </scope>
              <extendedAttributes></extendedAttrubutes>
              <inheritanceAllowed></inheritanceAllowed>
              <member>
                <objectId></objectId>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <revision></revision>
                <objectTypeName></objectTypeName>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
              </member>
            </applicationGroup>
          schema: serviceGroupUpdate
    delete:
      displayName: serviceGroupDelete
      description: Delete a service group from a scope
      queryParameters:
        force:
          type: boolean
          required: false
          displayName: force
          description: Indicates if the delete should be forced or unforced. The default is unforced (false)
    /members/{moref}:
      displayName: serviceGroupMembers
      description: Add or delete service group members
      uriParameters:
        moref:
          required: true
          displayName: moref
          description: Management object reference to the member
      put:
        displayName: serviceGroupMembersCreate
        description: Add a member to the service group
      delete:
        displayName: serviceGroupMembersDelete
        description: Delete a member from the service group
  /scope/{scopeId}/members:
    displayName: serviceGroupMembersRead
    description: Get the members of a service group
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: globalroot-0 or datacenterId in upgrade use cases
    get:
      displayName: serviceGroupMembersRead
      description: Get a list of member elements that can be added to the service groups created on a particular scope.
/2.0/services/ipam/pools/scope/{scopeId}:
  displayName: ipPools
  description: Create a pool of IP addresses
  uriParameters:
    scopeId:
      required: true
      displayName: scopeId
      description: globalroot-0 or datacenterId in upgrade use cases
  get:
    displayName: ipPoolRead
    description: Read all IP Pools in a scope
  post:
    displayName: ipPoolCreate
    description: Create a pool of IP addresses
    body:
      application/xml:
        example: |
          <ipamAddressPool>
            <name></name>
            <prefixLength></prefixLength>
            <gateway></gateway>
            <dnsSuffix></dnsSuffix>
            <dnsServer1></dnsServer1>
            <dnsServer2></dnsServer2>
            <ipRanges>
              <ipRangeDto>
                <startAddress></startAddress>
                <endAddress></endAddress>
              </ipRangeDto>
            </ipRanges>
          </ipamAddressPool>
        schema: ipPool
/2.0/services/ipam/pools/{poolId}:
  displayName: ipPool
  description: Working with a specified IP pool
  uriParameters:
    poolId:
      required: true
      displayName: poolId
      description: Specified IP pool
  get:
    displayName: ipPoolRead
    description: Retrieve details about the IP pool
  put:
    displayName: ipPoolUpdate
    description: Modify an IP pool
    body:
      application/xml:
        example: |
          <ipamAddressPool>
            <objectId></objectId>
            <objectTypeName></objectTypeName>
            <vsmUuid></vsmUuid>
            <revision></revision>
            <type>
              <typeName></typeName>
            </type>
            <name></name>
            <extendedAttributes></extendedAttributes>
            <prefixLength></prefixLength>
            <gateway></gateway>
            <dnsSuffix></dnsSuffix>
            <dnsServer1></dnsServer1>
            <dnsServer2></dnsServer2>
            <ipRanges>
              <ipRangeDto>
                <id></id>
                <startAddress></startAddress>
                <endAddress></endAddress>
              </ipRangeDto>
            </ipRanges>
          </ipamAddressPool>
        schema: ipPoolUpdate
  delete:
    displayName: ipPoolDelete
    description: Delete an IP pool
  /ipaddresses:
    displayName: ipPoolAllocate
    description: Work with IP's and their allocation status in IP Pools
    get:
      displayName: ipPoolIpsRead
      description: Retrieve all IP's and their allocation status in an IP Pool
    post:
      displayName: ipPoolAllocateIp
      description: |
        Allocate an IP Address from the pool. Use 'ALLOCATE' in the 'allocationMode' field in the
        body to allocate the next available ip. To allocate a specific one use 'RESERVE' and
        pass the IP to reserve in the 'ipAddress' fiels in the body
      body:
        application/xml:
          example: |
            <ipAddressRequest>
              <allocationMode></allocationMode>
              <ipAddress></ipAddress>
            </ipAddressRequest>
          schema: ipAddressRequest
    /{ipAddress}:
      displayName: ipAddressRelease
      description: Release an IP Address allocation in the Pool
      uriParameters:
        ipAddress:
          required: true
          displayName: ipAddress
          description: The Id of the ip address to release, e.g. '192.168.10.10'
      delete:
        displayName: ipAddressRelease
        description: Release an IP Address allocation in the Pool
/2.0/services/securitytags/tag:
  displayName: securityTag
  description: Working with security tags
  post:
    displayName: securityTagCreate
    description: Create a new security tag
    body:
      application/xml:
        example: |
          <securityTag>
            <objectTypeName></objectTypeName>
            <type>
              <typeName></typeName>
            </type>
            <name></name>
            <description></description>
            <extendedAttributes></extendedAttributes>
          </securityTag>
        schema: securityTagCreate
  get:
    displayName: securityTagRead
    description: Retrieve security tags
  /{tagId}:
    displayName: securityTagDelete
    description: Delete a security tag
    uriParameters:
      tagId:
        description: Specified security tag
        displayName: tagId
        required: true
    delete:
      displayName: securityTagDelete
      description: Delete the specified security tag
    /vm:
      displayName: securityTagVMsList
      description: Retrieve the list of vm's that have the specified tag attached to them
      get:
        displayName: securityTagVMsList
        description: Retrieve the list of vm's that have the specified tag attached to them
      /{vmMoid}:
        displayName: securityTagVM
        description: Apply or detach a security tag to virtual machine
        uriParameters:
          vmMoid:
            description: ID of VM
            displayName: vmMoid
            required: true
        put:
          displayName: securityTagVMAttach
          description: Apply a security tag to virtual machine
        delete:
          displayName: securityTagVMDetach
          description: Detach a security tag from a virtual machine
/2.0/services/ssoconfig:
  displayName: ssoConfig
  description: Operations on NSX Manager SSO registration
  get:
    displayName: ssoConfigRead
    description: Query SSO Details
  post:
    displayName: ssoConfigSet
    description: Register NSX Manager to SSO Services
    body:
      application/xml:
        example: |
          <ssoConfig>
            <ssoLookupServiceUrl></ssoLookupServiceUrl>
            <ssoAdminUsername></ssoAdminUsername>
            <ssoAdminUserpassword></ssoAdminUserpassword>
            <certificateThumbprint></certificateThumbprint>
          </ssoConfig>
        schema: ssoConfig
  delete:
    displayName: ssoConfigDelete
    description: Deletes the NSX Manager SSO Configuration
  /status:
    displayName: ssoStatus
    description: Query the SSO configuration status of NSX Manager
    get:
      displayName: ssoStatusRead
      description: Query the SSO configuration status of NSX Manager
/2.0/services/usermgmt:
  displayName: userMgmt
  description: User Management Operations
  /user/{userId}:
    displayName: userMgmtUser
    description: Manage users
    uriParameters:
      userId:
        required: true
        displayName: userId
        description: user ID
    get:
      displayName: userMgmtUserRead
      description: Get information about a user
    delete:
      displayName: userMgmtUserDelete
      description: Remove the NSX role for a vCenter user
  /role/{userId}:
    displayName: userRoleMgmt
    description: Manage roles for users
    uriParameters:
      userId:
        required: true
        displayName: userId
        description: user to retrieve role information from
    get:
      displayName: userMgmtRoleRead
      description: Retrieve a user's role (possible roles are super_user, vshield_admin, enterprise_admin, security_admin, and audit)
    post:
      displayName: userMgmtRoleCreate
      description: Add role and resources for a user
      queryParameters:
        isGroup:
          displayName: isGroup
          description: Set to "true" to apply to a group; set to "false" to apply to an individual user
          required: true
          type: boolean
      body:
        application/xml:
          example: |
            <accessControlEntry>
              <role></role>
              <resource>
                <resourceId></resourceId>
              </resource>
            </accessControlEntry>
          schema: userRoleMgmtCreate
    put:
      displayName: userMgmtRoleUpdate
      description: Change a user's role
      body:
        application/xml:
          example: |
            <accessControlEntry>
              <role></role>
              <resource>
                <resourceId></resourceId>
              </resource>
            </accessControlEntry>
          schema: userRoleMgmtUpdate
    delete:
      displayName: userMgmtRoleDelete
      description: Delete the role assignment for specified vCenter user. Once this role is deleted, the user is removed from NSX Manager. You cannot delete the role for a local user.
  /enablestate/{value}:
    displayName: userMgmtState
    description: Change the state of a user account (enabled/disabled)
    uriParameters:
      value:
        required: true
        type: integer
        displayName: value
        description: value can be 0 to disable, or 1 to enable
    put:
      displayName: userMgmtStateUpdate
      description: Enable or disable a user account
  /users/vsm:
    displayName: userNSXManagerInfo
    description: Get information about users who have been assigned a NSX Manager role (local users as well as vCenter users with NSX Manager role)
    get:
      displayName: userNSXManagerInfoRead
      description: Get information about users who have been assigned a NSX Manager role (local users as well as vCenter users with NSX Manager role)
  /roles:
    displayName: userMgmtRoles
    description: NSX Manager user management operations on roles
    get:
      displayName: userMgmtRoleRead
      description: Read all possible roles in NSX Manager
  /scopingobjects:
    displayName: userScopingObjects
    description: Retrieve a list of objects that can be used to define a user's access scope
    get:
      displayName: userScopingObjectsRead
      description: Retrieve a list of objects that can be used to define a user's access scope
/2.0/services/securitygroup:
  displayName: secGroup
  description: Operations on securitygroups
  /bulk/{scopeId}:
    displayName: secGroupCreate
    description: Create a new security group on a global scope or universal scope. Use either "globalroot-0" or "universalroot-0"
    uriParameters:
       scopeId:
         required: true
         displayName: scopeId
         description: In the current version the scopeId will always be globalroot-0
    post:
      displayName: secGroupCreate
      description: Create a new security group on a global scope
      body:
        application/xml:
          example: |
            <securitygroup>
              <objectId></objectId>
              <objectTypeName></objectTypeName>
              <vsmUuid></vsmUuid>
              <revision></revision>
              <type>
                <typeName></typeName>
              </type>
              <name></name>
              <scope>
                <id></id>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <name></name>
                <revision></revision>
              </scope>
              <clientHandle></clientHandle>
              <extendedAttributes></extendedAttributes>
              <member>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes></extendedAttributes>
              </member>
              <excludeMember>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes></extendedAttributes>
              </excludeMember>
              <dynamicMemberDefinition>
                <dynamicSet>
                  <operator></operator>
                  <dynamicCriteria>
                    <operator></operator>
                    <key></key>
                    <criteria></criteria>
                    <value></value>
                  </dynamicCriteria>
                </dynamicSet>
              </dynamicMemberDefinition>
            </securitygroup>
          schema: secGroupGlobalCreate
  /bulk/{objectId}:
    displayName: secGroupUpdate
    description: Update a specific security group
    uriParameters:
      objectId:
        required: true
        displayName: objectId
        description: Security group to modify
    put:
      displayName: secGroupUpdate
      description: Update a specific security group
      body:
        application/xml:
          example: |
            <securitygroup>
              <objectId></objectId>
              <objectTypeName></objectTypeName>
              <vsmUuid></vsmUuid>
              <revision></revision>
              <type>
                <typeName></typeName>
              </type>
              <name></name>
              <scope>
                <id></id>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <name></name>
                <revision></revision>
              </scope>
              <clientHandle></clientHandle>
              <extendedAttributes></extendedAttributes>
              <member>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes/>
              </member>
              <excludeMember>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes><extendedAttributes/>
              </excludeMember>
              <dynamicMemberDefinition>
                <dynamicSet>
                  <operator></operator>
                  <dynamicCriteria>
                    <operator></operator>
                    <key></key>
                    <criteria></criteria>
                    <value></value>
                  </dynamicCriteria>
                </dynamicSet>
              </dynamicMemberDefinition>
            </securitygroup>
          schema: secGroupBulkObjectUpdate
  /scope/{scopeId}:
    displayName: secGroupScope
    description: Operations to list information about security groups on a given scope
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: scopeId can be "globalroot-0", "universalroot-0" or datacenterID/portgroupID in upgrade use cases
    get:
      displayName: secGroupScopeRead
      description: List all the security groups created on a specific scope
    /memberTypes:
      displayName: secGroupMemberTypes
      description: Information on valid elements that can be added to a security group
      get:
        displayName: secGroupScopeMembersRead
        description: Retrieve a list of valid elements that can be added to a security group.
    /members/{memberType}:
      displayName: secGroupScopeMemberByType
      description: Retrieve members of a specific type under a scope
      uriParameters:
        memberType:
          required: true
          displayName: memberType
          description: Specific member type
      get:
        displayName: secGroupScopeMemberTypeRead
        description: Retrieve members of a specific type under a scope
  /{objectId}:
    displayName: secGroupObject
    description: Operations for an individual security group
    uriParameters:
      objectId:
        required: true
        displayName: objectId
        description: Specified security group
    get:
      displayName: secGroupObjectRead
      description: Retrieve all members of the specified security group
    delete:
      displayName: secGroupObjectDelete
      description: Delete an existing security group
      queryParameters:
        force:
          displayName: force
          required: true
          type: boolean
    /members/{memberMoref}:
      displayName: secGroupMember
      description: Operations on members of an individual security group
      uriParameters:
        memberMoref:
          required: true
          displayName: memberMoref
          description: Security group member
      put:
        displayName: secGroupMemberUpdate
        description: Add a new member to specified security group
      delete:
        displayName: secGroupMemberDelete
        description: Delete member from specified security group
    /translation/virtualmachines:
      displayName: secGroupVMNodes
      get:
        displayName: secGroupVMNodesRead
        description: Retrieve list of VmNode entities that belong to a specific security group.
    /translation/ipaddresses:
      displayName: secGroupIPNodes
      get:
        displayName: secGroupIPNodesRead
        description: Retrieve list of IpNode entities that belong to a specific security group.
    /translation/macaddresses:
      displayName: secGroupMacNodes
      get:
        displayName: secGroupMacNodesRead
        description: Retrieve list of MacNode entities that belong to a specific security group.
    /translation/vnics:
      displayName: secGroupVnicNodes
      get:
        displayName: secGroupVnicNodesRead
        description: Retrieve list of VnicNode entities that belong to a specific security group.
  /lookup/virtualmachine/{virtualMachineId}:
    displayName: secGroupLookupVM
    description: Retrieve list of security groups that the specified virtual machine belongs to.
    uriParameters:
      virtualMachineId:
        required: true
        displayName: virtualMachineId
        description: Specified virtual machine
    get:
      displayName: secGroupLookupVMRead
      description: Retrieve list of security groups that the specified virtual machine belongs to.
  /internal/scope/{scopeId}:
    displayName: secGroupInternal
    description: Information on internal security groups
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: Specified transport zone (scope)
    get:
      displayName: secGroupInternalRead
      description: Retrieve all internal security groups on the NSX Manager. These are used internally by the system and should not be created or modified by end users.
/2.0/services/ipset:
  displayName: ipsets
  description: Operations on IP Sets
  /scope/{scopeMoref}:
    displayName: ipsetList
    uriParameters:
      scopeMoref:
        required: true
        displayName: ipsetScopeMoref
        description: For scopeMoref use "globalroot-0" for non-universal IP sets and use "universalroot-0" for universal IP sets.
    get:
      displayName: ipsetList
      description: Retrieve all configured IPSets
  /{scopeMoref}:
    displayName: ipsetCreate
    uriParameters:
      scopeMoref:
        required: true
        displayName: ipsetScopeMoref
        description: For scopeMoref use "globalroot-0" for non-universal IP sets and use "universalroot-0" for universal IP sets.
    post:
      displayName: ipsetCreate
      description: creates a new IPset
      body:
        application/xml:
          example: |
            <ipset>
              <objectId></objectId>
              <type>
                <typeName></typeName>
              </type>
              <description></description>
              <name></name>
              <revision></revision>
              <objectTypeName></objectTypeName>
              <value></value>
              <inheritanceAllowed></inheritanceAllowed>
            </ipset>
          schema: ipSet
  /{ipsetId}:
    displayName: ipset
    uriParameters:
      ipsetId:
        required: true
        displayName: ipsetId
        description: The IPset to be queried or changed
    get:
      displayName: ipsetRead
      description: Retrieve an individual IPset
    put:
      displayName: ipsetUpdate
      description: Modify an existing IPset
    delete:
      displayName: ipsetDelete
      description: delete an IPset
      queryParameters:
          force:
            displayName: force
            description: Set to "true" when forcing the removal of an IP set.
            type: boolean
            required: false
/2.0/services/vcconfig:
  displayName: vCenterConfig
  description: Configuring NSX Manager with vCenter Server
  get:
    displayName: vCenterConfigRead
    description: Get vCenter Server configuration details on NSX Manager
  put:
    displayName: vCenterConfigUpdate
    description: Synchronize NSX Manager with vCenter server
    body:
      application/xml:
        example: |
          <vcInfo>
            <ipAddress></ipAddress>
            <userName></userName>
            <password></password>
            <certificateThumbprint></certificateThumbprint>
            <assignRoleToUser></assignRoleToUser>
            <pluginDownloadServer></pluginDownloadServer>
            <pluginDownloadPort></pluginDownloadPort>
          </vcInfo>
        schema: vcConfig
  /status:
    displayName: vCenterStatus
    description: Connection status for vCenter Server
    get:
      displayName: vCenterStatusRead
      description: Get default vCenter Server connection status
/2.0/universalsync:
  displayName: universalSync
  description: Configuring Universal Sync for the NSX manager
  /configuration:
    /role:
      displayName: universalSyncConfigurationRole
      description: Universal Sync Configuration
      post:
        displayName: universalSyncConfigurationRoleSet
        description: Set the Universal Sync Configuration role
        queryParameters:
          action:
            displayName: action
            description: Set the role of the NSX manager. Possible values are set-as-standalone, set-as-primary,  set-as-secondary
      get:
        displayName: universalSyncConfigurationRoleRead
        description: Get the Universal Sync Configuration role
    /nsxmanagers:
      displayName: universalSyncConfigurationNsxManagers
      description: Universal sync configuration of NSX managers
      delete:
        displayName: universalSyncConfigurationNsxManagersDelete
        description: Delete secondary NSX manager configuration
      /thumbprint:
        displayName: universalSyncConfigurationNsxManagersThumbprint
        description: Universal sync configuration NSX manager thumbprint
        put:
          displayName: universalSyncConfigurationNsxManagersThumbprintUpdate
          description: Update the NSX manager thumprint in the universal sync configuration
          body:
            application/xml:
              example: |
                <nsxManagerInfo>
                  <uuid></uuid>
                  <nsxManagerIp></nsxManagerIp>
                  <certificateThumbprint></certificateThumbprint>
                  <isPrimary></isPrimary>
                </nsxManagerInfo>
              schema: universalSyncConfigurationManagersThumbprintUpdate
        /{nsxManagerID}:
          displayName: universalSyncConfigurationManagers
          description: Universal sync configuration of a specific NSX manager
          get:
            displayName: universalSyncConfigurationManagersRead
            description: Query universal sync configuration information on a specific NSX manager by ID
          delete:
            displayName: universalSyncConfigurationManagersDelete
            description: Delete a secondary NSX manager by ID
            queryParameters:
              forceRemoval:
                type: boolean
                required: false
                displayName: universalSyncConfigurationManagerDeleteforceRemoval
                description: Force removal of a secondary NSX manager (true/false)
  /sync:
    displayName: universalSyncSync
    description: Sync all objects on the NSX manager
    post:
      displayName: universalSyncSync
      description: Sync all objects on the NSX manager
      queryParameters:
        action:
          displayName: application
          description: Use "invoke" to sync all objects on the NSX manager
  /entitystatus:
    displayName: universalSyncEntityStatus
    description: The status of an universal sync entity
    get:
      displayName: universalSyncEntityStatusRead
      description: Read the status of a universal sync entity
      queryParameters:
        objectType:
          displayName: objectType
          description: Specifiy the object type. For example "VdnScope"
        objectId:
          displayName: objectId
          description: Specify the bojectID. For example "globalvdnscope"
  /status:
    displayName: universalSyncStatus
    description: Universal sync status
    get:
      displayName: universalSyncStatusRead
      description: Read the universal sync status
/1.0/appliance-management:
  displayName: applianceManager
  description: Working with Appliance Manager
  /global/info:
    displayName: globalInfo
    description: Global appliance manager information
    get:
      displayName: globalInfoRead
      description: Retrieve global information containing version information as well as current logged in user
  /summary/system:
    displayName: systemInfo
    description: Summary appliance manager information
    get:
      displayName: summaryInfoRead
      description: Retrieve system summary info such as address, dns name, version, CPU, memory and storage
  /summary/components:
    displayName: componentInfo
    description: Component information
    get:
      displayName: componentInfoRead
      description: Retrieve summary of all available components and their status info
  /system/restart:
    displayName: systemReboot
    description: Reboot the appliance manager
    post:
      displayName: systemReboot
      description: Reboot the appliance manager
  /system/cpuinfo:
    displayName: systemCPUInfo
    description: CPU Info
    get:
      displayName: systemCPUInfo
      description: Query CPU information
  /system/uptime:
    displayName: systemUptime
    description: Appliance Manager uptime
    get:
      displayName: systemUptime
      description: Query appliance manager uptime
  /system/meminfo:
    displayName: systemMemoryInfo
    description: Appliance Manager memory
    get:
      displayName: systemMemoryInfo
      description: Query memory
  /system/storageinfo:
    displayName: systemStorageInfo
    description: Appliance Manager storage
    get:
      displayName: systemStorageInfo
      description: Query storage
  /system/network:
    displayName: networkSettings
    description: Working with network settings
    get:
      displayName: networkSettingsRead
      description: Retrieve network information i.e. host name, IP address, DNS settings
    /dns:
      displayName: dns
      description: Configure DNS
      put:
        displayName: dnsUpdate
        description: Configure DNS
        body:
          application/xml:
            example: |
              <dns>
                <ipv4Address></ipv4Address>
                <ipv6Address></ipv6Address>
                <domainList></domainList>
              </dns>
            schema: dnsUpdate
      delete:
        displayName: dnsDelete
        description: Delete DNS servers
  /system/timesettings:
    displayName: systemTime
    description: Working with time settings
    get:
      displayName: systemTimeRead
      description: Retrieve time settings
    put:
      displayName: systemTimeUpdate
      description: Configure time or specify the NTP server to use for time synchronization
      body:
        application/xml:
          example: |
            <timeSettings>
              <ntpServer>
                <string></string>
              </ntpServer>
              <datetime></datetime>
              <timezone></timezone>
            </timeSettings>
          schema: systemTimeUpdate
    /ntp:
      displayName: ntp
      description: Delete NTP server
      delete:
        displayName: ntpDelete
        description: Delete NTP server
  /system/locale:
    displayName: systemLocale
    description: Configure locale
    get:
      displayName: systemLocaleRead
      description: Retrieve locale info
    put:
      displayName: systemLocaleUpdate
      description: Configure locale
      body:
        application/xml:
          example: |
            <locale>
              <language></language>
              <country></country>
            </locale>
          schema: systemLocaleUpdate
  /system/syslogserver:
    displayName: systemSyslogServer
    description: Working with syslog servers
    get:
      displayName: systemSyslogServerRead
      description: Retrieve syslog servers
    put:
      displayName: systemSyslogServerUpdate
      description: Configure syslog servers
      body:
        application/xml:
          example: |
            <syslogserver>
              <syslogServer></syslogServer>
              <port></port>
              <protocol></protocol>
            </syslogserver>
          schema: systemSyslogServerUpdate
    delete:
      displayName: systemSyslogServerDelete
      description: Delete syslog servers
  /components:
    displayName: componentsManagement
    description: Components management
    get:
      displayName: componentsManagementRead
      description: Retrieve all Appliance Manager components
    /{componentID}:
      displayName: componentManagement
      description: Specific component management
      uriParameters:
        componentID:
          required: true
          displayName: componentID
          description: Specified component ID
      get:
        displayName: componentManagementRead
        description: Retrieve details for specified component
      /dependencies:
        displayName: componentDependencies
        description: Component dependencies
        get:
          displayName: componentDependenciesRead
          description: Retrieve dependency details for specified component
      /dependents:
        displayName: componentDependents
        description: Component dependents
        get:
          displayName: componentDependentsRead
          description: Retrieve dependents for the specified component
      /status:
        displayName: componentStatus
        description: Component status
        get:
          displayName: componentStatusRead
          description: Retrieve current status for specified component
  /backuprestore/backupsettings:
    displayName: applianceMgrBackupSettings
    description: Appliance Manager backup settings
    get:
      displayName: applianceMgrBackupSettingsRead
      description: Retrieve backup settings
    put:
      displayName: applianceMgrBackupSettingsUpdate
      description: Configure backup on the Appliance Manager
      body:
        application/xml:
          example: |
            <backupRestoreSettings>
              <ftpSettings>
                <transferProtocol></transferProtocol>
                <hostNameIPAddress></hostNameIPAddress>
                <port></port>
                <userName></userName>
                <password></password>
                <backupDirectory></backupDirectory>
                <filenamePrefix></filenamePrefix>
                <passiveMode></passiveMode>
                <useEPRT></useEPRT>
                <useEPSV></useEPSV>
              </ftpSettings>
              <backupFrequency>
                <frequency></frequency>
                <dayOfWeek></dayOfWeek>
                <hourOfDay></hourOfDay>
                <minuteOfHour></minuteOfHour>
              </backupFrequency>
              <excludeTables>
                <excludeTable></excludeTable>
              </excludeTables>
            </backupRestoreSettings>
          schema: applianceMgrBackupSettingsUpdate
    delete:
      displayName: applianceMgrBackupSettingsDelete
      description: Delete Appliance Manager backup configuration
  /backuprestore/backup:
    displayName: applianceMgrBackup
    description: On-demand backup
    post:
      displayName: applianceMgrBackup
      description: Backup NSX data on-demand
  /backuprestore/backups:
    displayName: applianceMgrBackups
    description: Retrieve list of all backups available at configured backup location
    get:
      displayName: applianceMgrBackupsRead
      description: Retrieve list of all backups available at configured backup location
  /backuprestore/restore:
    displayName: applianceMgrBackupRestore
    description: Restore data from a backup file
    post:
      displayName: applianceMgrBackupRestore
      description: Restore data from a backup file
      queryParameters:
        restoreFile:
          required: true
          displayName: restoreFile
          description: file name of restore file
  /techsupportlogs/{componentID}:
    displayName: techLogs
    description: Generate tech support logs
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Specified component to generate tech support logs
    post:
      displayName: techLogsCreate
      description: Generate tech support logs
  /techsupportlogs/{filename}:
    displayName: techLogsDownload
    description: Download tech support logs
    uriParameters:
      filename:
        required: true
        displayName: filename
        description: Name of log file to download
    get:
      displayName: techLogsDownload
      description: Download tech support logs
  /notifications:
    displayName: notifications
    description: Working with support notifications
    get:
      displayName: notificationsRead
      description: Retrieve all system generated notifications
    delete:
      displayName: notificationsDelete
      description: Delete all notifications
    /{ID}/acknowledge:
      displayName: notificationsAcknowledge
      description: Acknowledge a notification
      uriParameters:
        ID:
          displayName: ID
          description: Notification ID
          required: true
      post:
        displayName: notificationsAcknowledge
        description: Acknowledge a notification
  /upgrade/uploadbundle/{componentID}:
    displayName: upgrade
    description: NSX Manager upgrade details
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Component ID
    post:
      displayName: upgradeBundleUpload
      description: Upload upgrade bundle
    get:
      displayName: upgradeBundleDetails
      description: Query upgrade details (after uploading upgrade bundle)
  /upgrade/start/{componentID}:
    displayName: upgradeStart
    description: Start upgrade process
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Component ID
    get:
      displayName: upgradeStart
      description: Start upgrade process
  /status/{componentID}:
    displayName: upgradeStatus
    description: Query upgrade status
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Component ID
    get:
      displayName: upgradeStatus
      description: Query upgrade status
  /certificatemanager/certificates/nsx:
    displayName: certificateManager
    description: NSX Manager certificate manager
    get:
      displayName: certificateManagerCertificatesNsxRead
      description: Query the certificate thumbprint from a NSX manager
/2.0/systemevent:
  displayName: systemEvents
  description: Get NSX Manager system events
  get:
    displayName: systemEventsRead
    description: Get NSX Manager system events
    queryParameters:
      startIndex:
        displayName: startIndex
        description: optional; specify starting point for retrieving the logs
      pageSize:
        displayName: pageSize
        description: optional; limit the max number of entries returned. Valid range is 1-1024
        default: 256
/2.0/auditlog:
  displayName: auditLogs
  description: Get NSX Manager audit logs
  get:
    displayName: auditLogsRead
    description: Get NSX Manager audit logs
    queryParameters:
      startIndex:
        displayName: startIndex
        description: optional; specify starting point for retrieving the logs
      pageSize:
        displayName: pageSize
        description: optional; limit the max number of entries returned. Valid range is 1-1024
        default: 256
/2.0/nwfabric:
  displayName: nwfabric
  description: Network virtualization components
  /configure:
    displayName: nwfabricConfig
    description: Install components
    post:
      displayName: nwfabricConfigCreate
      description: |
         Install network virtualization components
      body:
        application/xml:
          example: |
            <nwFabricFeatureConfig>
              <featureId></featureId>
              <resourceConfig>
                <resourceId></resourceId>
              </resourceConfig>
            </nwFabricFeatureConfig>
          schema: nwFabricConfig
      queryParameters:
        action:
          displayName: action
          description: If used, set to "synchronize" to reset communication between NSX Manager and a host/cluster
    put:
      displayName: nwfabricConfigUpdate
      description: Upgrade network virtualization components
      body:
        application/xml:
          schema: nwFabricConfig
    delete:
      displayName: nwfabricConfigDelete
      description: Delete network virtualization components
      body:
        application/xml:
          schema: nwFabricConfig
  /features:
    displayName: nwfabricFeatures
    get:
      displayName: nwfabricFeatures
      description: Retrieves all features available on the cluster
  /status:
    displayName: nwfabricStatus
    get:
      displayName: nwfabricStatus
      description: Retrieves the Status of Resources
      queryParameters:
        resource:
          displayName: resource
          description: This is a valid vCenter MOID, e.g. domain-c34 for a cluster
          required: true
    /child/{parentResourceID}:
      displayName: childStatus
      description: Status of child resources
      uriParameters:
        parentResourceID:
          required: true
          displayName: parentResourceID
          description: Parent resource ID
      get:
        displayName: childStatusRead
        description: Retrieve status
    /alleligible/{resourceType}:
      displayName: statusResourceType
      description: Status of resources by criterion
      uriParameters:
        resourceType:
          required: true
          displayName: resourceType
          description: Valid resource type
      get:
        displayName: statusResourceTypeRead
        description: Query status of resources by criterion
  /clusters/{clusterID}:
    displayName: nwfabricClusters
    description: Network virtualization component cluster configuration
    get:
      displayName: nwfabricClustersRead
      description: Read the locale ID on a cluster
    put:
      displayName: nwfabricClustersUpdate
      description: Update the locale ID on a cluster
      body:
        application/xml:
          example: |
            <nwFabricClusterConfig>
              <localeId></localeId>
            </nwFabricClusterConfig>
          schema: nwfabricClustersUpdate
    delete:
      displayName: nwfabricClustersDelete
      description: Delete locale ID on a cluster
  /hosts/{hostID}:
    displayName: nwfabricHosts
    description: Network virtualization component host configuration
    get:
      displayName: nwfabricHostsRead
      description: Read the locale ID on a host
    put:
      displayName: nwfabricHostsUpdate
      description: Update the locale ID on a host
      body:
        application/xml:
          example: |
            <nwFabricHostConfig>
              <localeId></localeId>
            </nwFabricHostConfig>
          schema: nwfabricHostsUpdate
    delete:
      displayName: nwfabricHostsDelete
      description: Delete locale ID on a host
/2.0/si/deploy:
  displayName: securityFabric
  description: Security fabric
  post:
    displayName: securityFabricCreate
    description: Deploy security fabric
    queryParameters:
      startTime:
        displayName: startTime
        description: Time to start deployment task. If not specified, deploy immediately
    body:
      application/xml:
        example: |
          <clusterDeploymentConfigs>
            <clusterDeploymentConfig>
              <clusterId></clusterId>
              <datastore></datastore>
              <services>
                <serviceDeploymentConfig>
                  <serviceId></serviceId>
                  <dvPortGroup></dvPortGroup>
                  <ipPool></ipPool>
                </serviceDeploymentConfig>
              </services>
            </clusterDeploymentConfig>
          </clusterDeploymentConfigs>
        schema: securityFabricCreate
  put:
    displayName: serviceUpgrade
    description: Upgrade service to recent version
    queryParameters:
      startTime:
        displayName: startTime
        description: optional; specify time to start upgrade
    body:
      application/xml:
        example: |
          <clusterDeploymentConfigs>
            <clusterDeploymentConfig>
              <clusterId></clusterId>
              <datastore></datastore>
              <services>
                <serviceDeploymentConfig>
                  <serviceId></serviceId>
                  <serviceInstanceId></serviceInstanceId>
                  <dvPortGroup></dvPortGroup>
                  <ipPool></ipPool>
                </serviceDeploymentConfig>
              </services>
            </clusterDeploymentConfig>
          </clusterDeploymentConfigs>
        schema: serviceUpgrade
  /service/{serviceID}:
    displayName: service
    description: Working with a specified service
    uriParameters:
      serviceID:
        displayName: serviceID
        description: Specified service
        required: true
    get:
      displayName: serviceRead
      description: Retrieve all clusters on which the service is installed
    delete:
      displayName: serviceDelete
      description: Uninstall specified service from specified clusters
      queryParameters:
        clusters:
          displayName: clusters
          description: Comma-separated list of cluster id's that service needs to be uninstalled from
        startTime:
          displayName: startTime
          description: Time for uninstall to be scheduled. If not specified, uninstall immediately
    /dependsOn:
      displayName: serviceDependency
      description: Identify service on which the specified service depends on
      get:
        displayName: serviceDependencyRead
        description: Identify service on which the specified service depends on
  /cluster/{clusterID}:
    displayName: serviceCluster
    description: Working with installed services on a cluster
    uriParameters:
      clusterID:
        required: true
        displayName: clusterID
        description: Cluster ID
    get:
      displayName: serviceRead
      description: Retrieve all services deployed along with their status
    delete:
      displayName: serviceDelete
      description: Uninstall a service. Fails if you try to remove a service that another service depends on
      queryParameters:
        services:
          displayName: services
          description: Comma-separated list of service id's to specify which services to uninstall
        startTime:
          displayName: startTime
          description: time for uninstall to be scheduled. If not specified, do immediately
    /service/{serviceID}:
      displayName: serviceDetails
      description: Information about a service
      uriParameters:
        serviceID:
          displayName: serviceID
          description: Service ID on cluster
      get:
        displayName: serviceDetailsRead
        description: Retrieve detailed information about the service
/2.0/dlp:
  displayName: dataSecurityConfiguration
  description: Configuring Data Security
  /regulation:
    displayName: dlpRegulation
    description: Data loss prevention regulation
    get:
      displayName: dlpRegulationRead
      description: Retrieve the list of available regulations for a policy.
  /policy/regulations:
    displayName: dlpEnableRegulation
    description: Enable one or more regulations by putting the regulation IDs into the policy. You can get the IDs from the output of the dlpRegulation GET call
    put:
      displayName: dlpEnableRegulation
      description: Enable one or more regulations by putting the regulation IDs into the policy. You can get the IDs from the output of the dlpRegulation GET call
      body:
        application/xml:
          example: |
            <set>
              <long></long>
            </set>
          schema: dlpEnableRegulation
  /classificationvalue:
    displayName: dlpClassificationValue
    description: Classification values associated with regulations
    get:
      displayName: dlpClassificationValueRead
      description: Get all classification values
  /policy/classificationvalues:
    displayName: dlpRegexClassificationValue
    description: Configure a customized regex as a classification value
    put:
      displayName: dlpRegexClassificationValue
      description: Configure a customized regex as a classification value
      body:
        application/xml:
          example: |
            <set>
              <ClassificationValue>
                <id></id>
                <classification>
                  <id></id>
                  <name></name>
                  <providerName></providerName>
                  <description></description>
                  <customizable></customizable>
                </classification>
                <value></value>
              </ClassificationValue>
            </set>
          schema: dlpRegexClassificationValue
  /excludableareas:
    displayName: dlpExcludableAreas
    description: Retrieve list of datacenters, clusters, and resource pools that are excludable from policy inspection
    get:
      displayName: dlpExcludableAreas
      description: Retrieve list of datacenters, clusters, and resource pools that are excludable from policy inspection
  /policy/excludedareas:
    displayName: dlpExcludeArea
    description: (DEPRECATED; use PUT /2.0/dlp/policy/excludedsecuritygroups instead) Exclude areas from policy inspection
    put:
      displayName: dlpExcludeArea
      description: (DEPRECATED; use PUT /2.0/dlp/policy/excludedsecuritygroups instead) Exclude areas from policy inspection
      body:
        application/xml:
          example: |
            <set>
              <string></string>
            </set>
          schema: dlpExcludeArea
  /policy/includedsecuritygroups:
    displayName: dlpIncludeSecGroup
    description: Include security groups in data security scan
    get:
      displayName: dlpIncludeSecGroupRead
      description: Retrieve security groups that have been included in data security scans
    put:
      displayName: dlpIncludeSecGroupUpdate
      description: Include security groups in data security scan
      body:
        application/xml:
          example: |
            <set>
              <string></string>
              <string></string>
            </set>
          schema: dlpIncludeSecGroupUpdate
  /policy/excludedsecuritygroups:
    displayName: dlpExcludeSecGroup
    description: Exclude security groups in data security scan
    get:
      displayName: dlpExcludeSecGroupRead
      description: Retrieve security groups that have been excluded from data security scans
    put:
      displayName: dlpExcludeSecGroupUpdate
      description: Exclude security groups in data security scan
      body:
        application/xml:
          example: |
            <set>
              <string></string>
              <string></string>
              </set>
          schema: dlpExcludeSecGroupUpdate
  /policy/FileFilters:
    displayName: dlpFileFilters
    description: Configure file filters for scanning
    put:
      displayName: dlpFileFiltersUpdate
      description: Configure file filters for scanning
      body:
        application/xml:
          example: |
            <FileFilters>
              <scanAllFiles></scanAllFiles>
              <lastModifiedAfter></lastModifiedAfter>
              <extensionsIncluded></extensionsIncluded>
              <extensions></extensions>
            </FileFilters>
          schema: dlpFileFiltersUpdate
  /policy/saved:
    displayName: dlpPolicySave
    description: Retrieve last saved policy
    get:
      displayName: dlpPolicySave
      description: Get saved policy
  /policy/published:
    displayName: dlpPolicyPublished
    description: Retrieve currently published SDD policy
    get:
      displayName: dlpPolicyPublished
      description: Retrieve currently published policy
  /policy/publish:
    displayName: dlpPolicyPublish
    description: After updating a policy with added regulations, excluded areas, or customized regex values, publish an updated policy to enforce new parameters
    put:
      displayName: dlpPolicyPublish
      description: Publish the updated policy
  /scanop:
    displayName: dlpScanning
    description: Start, pause, resume, or stop a data security scan
    put:
      displayName: dlpScanning
      description: Start, pause, resume, or stop a data security scan
      body:
        application/xml:
          example: |
            <ScanOp></ScanOp>
          schema: dlpScanning
  /scanstatus:
    displayName: dlpScanStatus
    description: Retrieve the status of a scan operation
    get:
      displayName: dlpScanStatus
      description: Retrieve the status of a scan operation
  /scan/current/vms/{ID}:
    displayName: dlpScanVMs
    description: Retrieve information about the vm's being scanned
    uriParameters:
      ID:
        displayName: ID
        description: Limit filter results by VC MOID of datacenter, cluster, or resource pool
    get:
      displayName: dlpScanVMsRead
      description: Retrieve information about the vm's being scanned
      queryParameters:
        scanstatus:
          displayName: scanstatus
          description: Specify scan status of vm's to be retrieved (all|notstarted|started|completed)
        pagesize:
          displayName: pagesize
          description: Limit max number of entries returned. Valid range is 1-1024
          default: 256
        startindex:
          displayName: startindex
          description: Specify starting point for retrieving logs
  /completedscansummaries:
    displayName: dlpScanSummaries
    description: Retrieve start and end time, total number of vm's scanned, and total number of violations for the last five completed data security scans
    get:
      displayName: dlpScanSummariesRead
      description: Retrieve scan summaries
  /scan/{scanID}/detailsascsv:
    displayName: dlpPreviousScan
    description: Retrieve report on results of previous scan in CSV format
    uriParameters:
      scanID:
        required: true
        displayName: scanID
        description: Specified scan ID
    get:
      displayName: dlpPreviousScanRead
      description: Retrieve ID, Name, Scan status, and Violation counts for VM's scanned during specified scan
  /scan/{scanID}/policyasxml:
    displayName: dlpPolicyAsXML
    description: Retrieve XML representation of the policy used in the previous scan
    uriParameters:
      scanID:
        required: true
        displayName: scanID
        description: Specified previous scan
    get:
      displayName: dlpPolicyAsXML
      description: Retrieve XML representation of the policy used in the previous scan
  /violations:
    displayName: dlpViolations
    description: Query the regulations that have been violated in scans
    get:
      displayName: dlpViolationsRead
      description: Get violation count for entire inventory
    /{contextID}:
      displayName: dlpViolation
      description: Get violation count for specific resource
      uriParameters:
        contextID:
          required: true
          displayName: contextID
          description: Specified resource (moid of datacenter, cluster, folder, resource pool, or vm)
      get:
        displayName: dlpViolationRead
        description: Get violation count for specific resource
  /violatingfiles:
    displayName: dlpViolatingFiles
    description: Get violating files and the regulations each file violated
    get:
      displayName: dlpViolatingFilesRead
      description: Get violating files and the regulations each file violated
      queryParameters:
        pagesize:
          displayName: pagesize
          description: number of results to view
        startindex:
          displayName: startindex
          description: page number from which the results will be displayed
    /{contextID}:
      displayName: dlpViolatingFilesContext
      description: Get violating files for a resource
      uriParameters:
        contextID:
         required: true
         displayName: contextID
         description: Specified resource (moid of datacenter, cluster, folder, resource pool, or vm)
      get:
        displayName: dlpViolatingFilesContext
        description: Get violating files for a resource
        queryParameters:
          pagesize:
            displayName: pagesize
            description: number of results to view
          startindex:
            displayName: startindex
            description: page number from which the results will be displayed
  /violatingfilesascsv:
    displayName: dlpViolatingFilesCSV
    description: Display the violating files and the regulations each file violated in CSV format
    get:
      displayName: dlpViolatingFilesCSV
      description: Display the violating files and the regulations each file violated in CSV format
    /{contextID}:
      displayName: dlpViolatingFilesContextCSV
      description: Get violated regulations and violating files for the resource in CSV format
      uriParameters:
        contextID:
         required: true
         displayName: contextID
         description: Specified resource (moid of datacenter, cluster, folder, resource pool, or vm)
      get:
        displayName: dlpViolatingFilesContextCSV
        description: Get violated regulations and violating files for the resource in CSV format
/1.0/eventcontrol:
  displayName: eventControl
  description: eventControl Operations
  /vm/{vmID}/request:
    displayName: dataCollectionVM
    description: Enable or disable data collection on a virtual machine
    uriParameters:
      vmID:
        displayName: vmID
        description: MOID of the guest vm
        required: true
    post:
      displayName: dataCollectionVMCreate
      description: Enable or disable data collection on a virtual machine
      body:
        application/xml:
          example: |
            <perVmConfig>
              <actions>
                <action>
                  <type></type>
                  <value></value>
                </action>
              </actions>
            </perVmConfig>
          schema: dataCollectionVMCreate
  /eventcontrol-root/request:
    displayName: dataCollectionKillSwitch
    description: Data collection kill switch on/off
    post:
      displayName: dataCollectionKillSwitch
      description: Turn on/off data collection at global level
      body:
        application/xml:
          example: |
            <request>
              <actions>
                <action>
                  <type></type>
                  <value></value>
                </action>
              </actions>
            </request>
          schema: dataCollectionKillSwitch
  /config/vm/{vmID}:
    displayName: dataCollectionVMInfo
    description: Retrieve per vm configuration for data collection
    uriParameters:
      vmID:
        displayName: vmID
        description: MOID of the guest vm
        required: true
    get:
      displayName: dataCollectionVMInfoRead
      description: Retrieve per vm configuration for data collection
/3.0/ai:
  displayName: activityMonitoring
  description: Activity monitoring
  /records:
    displayName: userActivity
    description: Get aggregated user activity (action records) using parameters. Requires vShield Endpoint and NSX Endpoint configured, and Data collection enabled on 1+ vm's
    get:
      displayName: userActivityRead
      description: Get aggregated user activity
      queryParameters:
        query:
          displayName: query
          description: Name of report (resource,adg,containers,sam,vma)
          default: resource
          required: true
        interval:
          displayName: interval
          description: Relative time to current time (number followed by either m,h,d,s)
          example: 60m
          required: true
        stime:
          displayName: stime
          description: Start time for query
          default: 2012-02-28T21:00
        etime:
          displayName: etime
          description: End time for query
          default: 2012-02-29T21:00
        param:
          displayName: param
          description: Parameter to be applied to query (<param-name>:<param-type>:<comma-separated-values>:operator)
          default: src:SECURITY_GROUP:1:INCLUDE
        pagesize:
          displayName: pagesize
          description: Number of records to retrieve (recommended between 100-2000)
          default: 1000
        startindex:
          displayName: startindex
          description: Start record number for pagination
          default: 100
  /userdetails:
    displayName: userDetails
    description: Retrieve user detail records in accordance with given query parameters
    get:
      displayName: userDetailsRead
      description: Retrieve user detail records in accordance with given query parameters
      queryParameters:
        query:
          displayName: query
          description: Name of report (resource,adg,containers,sam,vma)
          required: true
          default: resource
        interval:
          displayName: interval
          description: Relative time to current time (number followed by either m,h,d,s)
          example: 60m
          required: true
        stime:
          displayName: stime
          description: Start time for query
          default: 2012-02-28T21:00
        etime:
          displayName: etime
          description: End time for query
          default: 2012-02-29T21:00
        param:
          displayName: param
          description: Parameter to be applied to query (<param-name>:<param-type>:<comma-separated-values>:operator)
          default: src:SECURITY_GROUP:1:INCLUDE
        pagesize:
          displayName: pagesize
          description: Number of records to retrieve (recommended between 100-2000)
          default: 1000
        startindex:
          displayName: startindex
          description: Start record number for pagination
          default: 100
  /user/{userID}:
    displayName: specificUserDetails
    description: Retrieve details for a specific user
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
    get:
      displayName: specificUserDetailsRead
      description: Retrieve details for a specific user
  /app:
    displayName: appDetails
    description: Retrieve app details
    get:
      displayName: appDetailsRead
      description: Retrieve app details
    /{appID}:
      displayName: specificAppDetails
      description: Retrieve details for specific app
      uriParameters:
        appID:
          required: true
          displayName: appID
          description: Specified app ID
      get:
        displayName: specificAppDetailsRead
        description: Retrieve details for specific app
  /host:
    displayName: hostDetails
    description: Host details
    get:
      displayName: hostDetailsRead
      description: Retrieve list of all discovered hosts (both by agent introspection and LDAP Sync) and their detail
    /{hostID}:
      displayName: specificHostDetails
      description: Specific host details
      uriParameters:
        hostID:
          displayName: hostID
          description: Specified host ID
          required: true
      get:
        displayName: specificHostDetailsRead
        description: Get host details
  /desktoppool:
    displayName: desktopPool
    description: Desktop pool details
    get:
      displayName: desktopPoolRead
      description: Retrieve list of all discovered desktop pools by agent introspection
    /{desktoppoolID}:
      displayName: specificDesktopPool
      description: Specific desktop pool details
      uriParameters:
        desktoppoolID:
          displayName: desktoppoolID
          description: Specified desktop pool
          required: true
      get:
        displayName: specificDesktopPoolRead
        description: Retrieve specific desktop pool details
  /vm:
    displayName: vmDetails
    description: Virtual machine details
    get:
      displayName: vmDetailsRead
      description: Retrieve list of all discovered vm's
    /{vmID}:
      displayName: specificVMDetails
      description: Specific VM details
      uriParameters:
        vmID:
          required: true
          displayName: vmID
          description: VM ID
      get:
        displayName: specificVMDetailsRead
        description: Retrieve details about a specific virtual machine
  /directorygroup:
    displayName: dirGroup
    description: LDAP directory group details
    get:
      displayName: dirGroupRead
      description: Retrieve list of all discovered (and configured) LDAP directory groups
    /{directorygroupID}:
      displayName: specificDirGroup
      description: Specific directory group details
      uriParameters:
        directorygroupID:
          displayName: directorygroupID
          description: Specified directory group
          required: true
      get:
        displayName: specificDirGroupRead
        description: Retrieve details about a specific directory group
    /user/{userID}:
      displayName: userDirGroup
      description: AD groups that a user belongs to
      uriParameters:
        userID:
          displayName: userID
          required: true
          description: User ID
      get:
        displayName: userDirGroupRead
        description: Retrieve AD groups that user belongs to
  /securitygroup:
    displayName: secgroupDetails
    description: Security group details
    get:
      displayName: secgroupDetailsRead
      description: Retrieve list of all observed security groups
    /{secgroupID}:
      displayName: specificSecgroupDetails
      description: Specific security group details
      uriParameters:
        secgroupID:
          required: true
          displayName: secgroupID
          description: Specified security group
      get:
        displayName: specificSecgroupDetailsRead
        description: Retrieve details about specific security group
/3.0/directory/updateDomain:
  displayName: domain
  description: Working with domains
  post:
    displayName: domainCreate
    description: Register or update a domain with NSX Manager
    body:
      application/xml:
        example: |
          <DirectoryDomain>
            <name></name>
            <type></type>
            <netbiosName></netbiosName>
            <username></username>
            <password></password>
          </DirectoryDomain>
        schema: domainCreate
/1.0/directory:
  displayName: domain
  description: LDAP / Domain Operations
  /updateDomain:
    displayName: domainUpdate
    description: Working with domains
    post:
      displayName: domainCreate
      description: Register or update a domain with NSX Manager
      body:
        application/xml:
            schema: domainCreate
  /listDomains:
    displayName: domainList
    description: Retrieve all agent discovered (or configured) LDAP domains
    get:
      displayName: domainListRead
      description: Retrieve all agent discovered (or configured) LDAP domains
  /deleteDomain/{ID}:
    displayName: domainDelete
    description: Delete domain
    uriParameters:
      ID:
        required: true
        displayName: ID
        description: Domain ID
    delete:
      displayName: domainDelete
      description: Delete domain
  /directory:
    displayName: ldapEventLogServer
    description: Working with LDAP servers and EventLog servers
    /updateLdapServer:
      displayName: ldapServerCreate
      description: Create LDAP server
      post:
        displayName: ldapServerCreate
        description: Create LDAP server
        body:
          application/xml:
            example: |
              <LDAPServer>
                <domainId></domainId>
                <hostName></hostName>
                <enabled></enabled>
              </LDAPServer>
            schema: ldapServerCreate
    /listLdapServersForDomain/{domainID}:
      displayName: ldapServerDomain
      description: Query LDAP servers for a domain
      uriParameters:
        domainID:
          displayName: domainID
          description: Specified domain
          required: true
      get:
        displayName: ldapServerDomainRead
        description: Query LDAP servers for a domain
    /fullSync/{domainID}:
      displayName: ldapServerSync
      description: Start LDAP full sync
      uriParameters:
        domainID:
          displayName: domainID
          description: Specified domain
          required: true
      put:
        displayName: ldapServerSync
        description: Start LDAP full sync
    /deltaSync/{domainID}:
      displayName: ldapServerDeltaSync
      description: Start LDAP delta sync
      uriParameters:
        domainID:
          displayName: domainID
          description: Specified domain
          required: true
      put:
        displayName: ldapServerDeltaSync
        description: Start LDAP delta sync
    /deleteLdapServer/{serverID}:
      displayName: ldapServerDelete
      description: Delete LDAP server
      uriParameters:
        serverID:
          required: true
          displayName: serverID
          description: Specified LDAP server
      delete:
        displayName: ldapServerDelete
        description: Delete LDAP server
    /updateEventLogServer:
      displayName: eLogServerCreate
      description: Create EventLog server
      post:
        displayName: eLogServerCreate
        description: Create EventLog server
        body:
          application/xml:
            example: |
              <EventlogServer>
                <id></id>
                <domainId></domainId>
                <hostName></hostName>
                <enabled></enabled>
              </EventlogServer>
            schema: eLogServerCreate
    /listEventLogServersForDomain/{domainID}:
      displayName: eLogServerDomainRead
      description: Query EventLog servers for a domain
      uriParameters:
        domainID:
          required: true
          displayName: domainID
          description: Specified domain
      get:
        displayName: eLogServerDomainRead
        description: Query EventLog servers for a domain
    /deleteEventLogServer/{serverID}:
      displayName: eLogServerDelete
      description: Delete EventLog server
      uriParameters:
        serverID:
          required: true
          displayName: serverID
          description: Specified EventLog server ID
      delete:
        displayName: eLogServerDelete
        description: Delete EventLog server
/1.0/identity:
  displayName: mappingLists
  description: Working with mapping lists
  /userIpMapping:
    displayName: userIpMapping
    description: Query user-to-ip mapping list from database
    get:
      displayName: userIpMappingRead
      description: Query user-to-ip mapping list from database
  /hostIpMapping:
    displayName: hostIpMapping
    description: Query host-to-ip mapping list from database
    get:
      displayName: hostIpMappingRead
      description: Query host-to-ip mapping list from database
  /ipToUserMapping:
    displayName: ipToUserMapping
    description: Query set of users associated with a given set of Ip addresses
    get:
      displayName: ipToUserMappingRead
      description: Query set of users associated with a given set of Ip addresses
  /directoryGroupsForUser/{userID}:
    displayName: userDirGroups
    description: Query set of Windows Domain Groups (AD Groups) to which the specified user belongs
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
    get:
      displayName: userDirGroupsRead
      description: Query set of Windows Domain Groups (AD Groups) to which the specified user belongs
  /staticUserMapping/{userID}/{IP}:
    displayName: staticUserMapping
    description: Create static user IP mapping
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
      IP:
        required: true
        displayName: IP
        description: IP address
    post:
      displayName: staticUserMappingCreate
      description: Create static user IP mapping
  /staticUserMappings:
    displayName: staticUserMappings
    description: Query static user IP mapping list
    get:
      displayName: staticUserMappingsRead
      description: Query static user IP mapping list
  /staticUserMappingsbyUser/{userID}:
    displayName: staticUserMappingsbyUser
    description: Query static user IP mapping for specified user
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
    get:
      displayName: staticUserMappingsbyUserRead
      description: Query static user IP mapping for specified user
    delete:
      displayName: staticUserMappingsbyUserDelete
      description: Delete static user IP mapping for specified user
  /staticUserMappingsbyIP/{IP}:
    displayName: staticUserMappingsbyIP
    description: Query static user IP mapping for specified IP
    uriParameters:
      IP:
        required: true
        displayName: IP
        description: IP address
    get:
      displayName: staticUserMappingsbyIPRead
      description: Query static user IP mapping for specified IP
    delete:
      displayName: staticUserMappingsbyIPDelete
      description: Delete static user IP mapping for specified IP
/1.0/sam/syslog:
  displayName: activityMonitoringSyslog
  description: Working with Activity Monitoring syslog support
  /enable:
    displayName: syslogEnable
    description: Enable syslog support
    post:
      displayName: syslogEnable
      description: Enable syslog support
  /disable:
    displayName: syslogDisable
    description: Disable syslog support
    post:
      displayName: syslogDisable
      description: Disable syslog support
/2.0/si:
  displayName: solutionIntegration
  description: Operations for solution Integrations
  /host/{hostID}/agents:
    displayName: hostAgents
    description: Agents on a specified host
    uriParameters:
      hostID:
        required: true
        displayName: hostID
        description: Specified host
    get:
      displayName: hostAgentsRead
      description: Retrieve all agents on the host
  /agent/{agentID}:
    displayName: agentInformation
    description: Agent details (host components and appliances)
    uriParameters:
      agentID:
        required: true
        displayName: agentID
        description: Specified agent
    get:
      displayName: agentInformationRead
      description: Retrieve agent details
  /deployment/{deploymentunitID}/agents:
    displayName: deploymentAgents
    description: Agents for a specified deployment
    uriParameters:
      deploymentunitID:
        required: true
        displayName: deploymentunitID
        description: Specified deployment
    get:
      displayName: deploymentAgentsRead
      description: Retrieve all agents for the specified deployment
  /fabric/sync/conflicts:
    displayName: agentConflicts
    description: Working with conflicting agencies
    get:
      displayName: agentConflictsRead
      description: Retrieve conflicting Deployment Units and EAM Agencies, if any, and the allowed operations on them
    put:
      displayName: agentConflictsUpdate
      description: Create deployment units for conflicting EAM Agencies, delete conflicting EAM agencies, or delete deployment units for conflicting EAM agencies
      body:
        application/xml:
/2.0/services/macset/{scopeId}:
  displayName: macsetScopes
  description: Working with MAC Sets.
  uriParameters:
    scopeId:
      required: true
      displayName: scopeId
      description: Can be "globalroot-0", "universalroot-0" or datacenterId in upgrade use cases
  post:
    displayName: macsetScopesCreate
    description: Create a MACset on a specified scope
    body:
      application/xml:
        example: |
          <macset>
            <objectId></objectId>
            <type>
              <typeName></typeName>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <value></value>
          </macset>
        schema: macSetCreateUpdate
  get:
    displayName: macsetScopesRead
    description: List MACsets created on a specified scope
/2.0/services/macset/{macsetId}:
  displayName: macset
  description: Operations on an individual MACset
  uriParameters:
    macsetId:
      required: true
      displayName: macsetId
      description: Specified MACset ID (Can be retrieved by listing the MACset on a scope)
  get:
    displayName: macsetRead
    description: Retrieve details about a MACset
  put:
    displayName: macsetUpdate
    description: Modify an existing MACset
    body:
      application/xml:
        example: |
          <macset>
            <objectId></objectId>
            <type>
              <typeName></typeName>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <value></value>
          </macset>
        schema: macSetCreateUpdate
  delete:
    displayName: macsetDelete
    description: Delete a MACset
    queryParameters:
      force:
        required: false
        displayName: force
        description: Indicates forced or unforced delete. With forced delete, the object is deleted even if used in other places such as firewall rules, causing invalid referrals. For unforced delete, the object is deleted only if it is no used by other configurations; otherwise the delete fails
        type: boolean
/2.0/services/taskservice/job:
  displayName: taskFramework
  description: Working with filtering criteria and paging information for jobs on the task framework
  get:
    displayName: taskFrameworkCriteria
    description: Query job instances by criterion
    queryParameters:
      startIndex:
        displayName: startIndex
        description: Start index (0 by default)
        required: false
        type: integer
      pageSize:
        displayName: pageSize
        description: Page size (10 by default)
        required: false
        type: integer
      sortBy:
        displayName: sortBy
        description: Always sorted by "startTime"
        required: false
      sortOrderAscending:
        displayName: sortOrderAscending
        description: Sort in ascending order of start time (true/false)
        required: false
        type: boolean
  /{jobId}:
    displayName: taskFrameworkJobs
    description: Job instances on the task framework
    uriParameters:
      jobId:
        required: true
        displayName: jobId
        description: Specified job Id
    get:
      displayName: taskFrameworkJobsRead
      description: Retrieve all job instances for the specified job ID
/2.0/endpointsecurity/registration:
  displayName: vShield
  description: Register a vendor/solution, set network address
  post:
    displayName: vShieldVendorCreate
    description: Register a vendor
    body:
      application/xml:
        example: |
          <VendorInfo>
            <id></id>
            <title></title>
            <description></description>
          </VendorInfo>
        schema: vShieldVendorCreate
  /vendors:
    displayName: vShieldVendorsInfo
    description: Registration status of vShield vendors
    get:
      displayName: vShieldVendorsInfoRead
      description: Retrieve the list of all registered vendors
  /{vendorID}:
    displayName: vShieldSolution
    description: Antivirus solutions
    uriParameters:
      vendorID:
        displayName: vendorID
        description: VMware-assigned ID for the vendor
        required: true
    post:
      displayName: vShieldSolutionCreate
      description: Register an antivirus solution
      body:
        application/xml:
          example: |
            <SolutionInfo>
              <altitude></altitude>
              <title></title>
              <description></description>
            </SolutionInfo>
          schema: vShieldSolutionCreate
    get:
      displayName: vShieldVendorInfoRead
      description: Get vendor registration information
    delete:
      displayName: vShieldVendorDelete
      description: Unregister a vendor
    /solutions:
      displayName: vShieldSolutionsInfo
      description: Registration information for all registered solutions for a vendor
      get:
        displayName: vShieldSolutionsInfoRead
        description: Retrieve registration information for all registered solutions for a vendor
    /{altitude}:
      displayName: vShieldSolutionInfo
      description: Solution registration information
      uriParameters:
        altitude:
          displayName: altitude
          description: VMware-assigned number to uniquely identify a solution. Describes the type of solution and the order in which the solution receives events relative to other solutions on the same host
      get:
        displayName: vShieldSolutionInfoRead
        description: Get registration information for a given solution
      delete:
        displayName: vShieldSolutionDelete
        description: Unregister a solution
      /location:
        displayName: solutionIPPort
        description: IP address and port for a solution
        post:
          displayName: solutionIPPortSet
          description: Set a solution's IP address and port on the vNIC host
          body:
            application/xml:
              example: |
                <LocationInfo>
                  <ip></ip>
                  <port></port>
                </LocationInfo>
              schema: solutionIPPortSet
        delete:
          displayName: solutionIPPortDelete
          description: Unset a solution's IP address and port
      /{moid}:
        displayName: solutionActivationStatus
        description: Solution activation status, given the managed object reference of its virtual machine
        uriParameters:
          moid:
            displayName: moid
            description: managed object reference
            required: true
        get:
          displayName: solutionActivationStatusRead
          description: Get the solution activation status
/2.0/endpointsecurity/activation:
  displayName: vShieldSolutionActivation
  description: vShield solution activation
  get:
    displayName: vShieldSolutionActivationRead
    description: Retrieve activation information for all activated security vm's on the specified host
    queryParameters:
      hostId:
        required: true
        displayName: hostId
        description: Specified host ID
  /{vendorID}/{solutionID}:
    displayName: vShieldSolutionActivatedVMs
    description: Activated security virtual machines
    uriParameters:
      vendorID:
        displayName: vendorID
        description: VMware-assigned ID for the vendor
        required: true
      solutionID:
        displayName: solutionID
        description: solution ID
        required: true
    get:
      displayName: vShieldSolutionActivatedVMsRead
      description: Get a list of activated security vm's for the specified solution
  /{vendorID}/{altitude}:
    displayName: vShieldSolutionActivate
    description: Activate a registered vShield solution
    uriParameters:
      vendorID:
        displayName: vendorID
        description: VMware-assigned ID for the vendor
        required: true
      altitude:
        displayName: altitude
        description: VMware-assigned number to uniquely identify a solution. Describes the type of solution and the order in which the solution receives events relative to other solutions on the same host
    post:
      displayName: vShieldSolutionActivate
      description: Activate a solution that has been registered and located
      body:
        application/xml:
          example: |
            <ActivationInfo>
              <moid></moid>
            </ActivationInfo>
          schema: vShieldSolutionActivate
    /{moid}:
      displayName: vShieldSolutionDeactivate
      description: Deactivate a solution on a host
      uriParameters:
        moid:
          required: true
          displayName: moid
          description: Managed object reference of VM
      delete:
        displayName: vShieldSolutionDeactivate
        description: Deactivate a solution on a host
/4.0/firewall:
  displayName: dfw
  description: Distributed Firewall Operations
  /globalroot-0/config:
    displayName: dfwConfig
    description: Global Distributed Firewall Rules configuration
    get:
      displayName: dfwConfigShow
      description: Global Distributed Firewall Rules configuration, use query Parameters to filter
      queryParameters:
        ruleType:
          required: false
          displayName: ruleType
          description: ruleType can be LAYER3, LAYER2, L3REDIRECT. Rule Type is mandatory if other search parameters are sent
        source:
          required: false
          displayName: source
          description: source/destination can contain IPv4/v6 address or vm‐id
        ruleId:
          required: false
          displayName: ruleId
          description: filter by ruleId
        comment:
          required: false
          displayName: comment
          description: comment can contain any portion of the comment entered for the rules. Search is case insensitive
        name:
          required: false
          displayName: name
          description: name can contain any portion of the rulename entered for the rules. Search is case insensitive
        siProfile:
          required: false
          displayName: siProfile
          description: siProfile can contain any portion of the ServiceProfile name associated with L3redirectrule. Search is case insensitive.
        edgeId:
          required: false
          displayName: edgeId
          description: edgeId is the EdgeID, that displays rules applicable to the specified Edge
        action:
          required: false
          displayName: action
          description: Filter for specific action (allow, deny)
    put:
      displayName: dfwConfigUpdate
      description: This will update the complete firewall configuration in all sections. You will need to get the Etag value out of the GET (dfwConfigShow) first. Then pass the modified version of the whole firewall configuration in the GET body
      headers:
        if-match:
          required: true
          displayName: if-match
          description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
      body:
        application/xml:
    delete:
      displayName: dfwConfigDelete
      description: Restores default configuration, which means one defaultLayer3 section with default allow rule and one defaultLayer2Section with default allow rule
    /layer3sections:
      displayName: dfwL3Section
      description: L3 Firewall Operations on specific section specified by name (in a query Parameter)
      get:
        displayName: dfwL3SectionRead
        description: Read a specific section of the DFW config specified by name
        queryParameters:
          name:
            required: false
            displayName: name
            description: Name of the Section to read
      post:
        displayName: dfwL3SectionCreate
        description: Creates a new L3 Firewall Section with a number of rules
        body:
         application/xml:
           example: |
            <section name="" managedBy="" type="">
              <rule disabled="" logged="">
                <name></name>
                <action></action>
                <appliedToList>
                  <appliedTo>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </appliedTo>
                </appliedToList>
                <sources excluded="">
                  <source>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </source>
                </sources>
                <destinations excluded="">
                  <destination>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </destination>
                </destinations>
                <services>
                  <service>
                    <destinationPort></destinationPort>
                    <protocol></protocol>
                    <subProtocol></subProtocol>
                  </service>
                </services>
              </rule>
              <rule disabled="" logged="">
                <name></name>
                <action></action>
              </rule>
            </section>
           schema: dfwSection
      /{sectionId}:
        displayName: dfwL3SectionId
        description: L3 Firewall Operations on specific section specified by section ID
        uriParameters:
          sectionId:
            required: true
            displayName: sectionId
            description: The ID of the section beeing added, updated or deleted
        get:
          displayName: dfwL3SectionIdRead
          description: Read a specific section of the DFW config specified by Id
        put:
          displayName: dfwL3SectionIdUpdate
          description: |
            Updates a L3 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
        delete:
          displayName: dfwL3SectionIdDelete
          description: Deletes a L3 section and its content by ID
        /rules:
          displayName: dfwL3Rules
          description: Operations to add one or more L3 Rules
          post:
            displayName: dfwL3RulesAdd
            description: Add a L3 Rule
            headers:
              If-match:
                required: true
                displayName: If-match
                description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
            body:
              application/xml:
                example: |
                  <rule disabled="" logged="">
                    <name></name>
                    <action></action>
                    <notes></notes>
                    <appliedToList>
                      <appliedTo>
                        <value></value>
                        <type></type>
                      </appliedTo>
                    </appliedToList>
                    <sources excluded="">
                      <source>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </source>
                    </sources>
                    <destinations excluded="">
                      <destination>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </destination>
                    </destinations>
                    <services>
                      <service>
                        <value></value>
                      </service>
                    </services>
                  </rule>
                schema: dfwRule
          /{ruleId}:
            displayName: dfwL3Rule
            description: Operations on L3 rules in sections identified by section Id and Rule Id
            uriParameters:
              ruleId:
                required: true
                displayName: ruleId
                description: The ID of the rule beeing read, updated or deleted
            get:
              displayName: dfwL3RuleRead
              description: Read the configuration of a specific rule identified by rule Id
            put:
              displayName: dfwL3RuleUpdate
              description: |
                Updates a L3 DFW Rule. To do this you need to read it first, make your changes,
                and then update the section by supplying the Etag value received in the read in the If-Match header
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
              body:
                application/xml:
            delete:
              displayName: dfwL3RuleDelete
              description: Delete a specific rule identified by rule Id
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
      /{sectionName}:
        displayName: dfwL3SectionName
        description: L3 Firewall Update Operations on specific section specified by section Name
        put:
          displayName: dfwL3SectionNameUpdate
          description: |
            Updates a L3 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
    /layer2sections:
      displayName: dfwL2Section
      description: L2 Firewall Operations on specific section specified by name (in a query Parameter)
      get:
        displayName: dfwL2SectionRead
        description: Read a specific section of the DFW config specified by name
        queryParameters:
          name:
            required: false
            displayName: name
            description: Name of the Section to read
      post:
        displayName: dfwL2SectionCreate
        description: Creates a new L2 Firewall Section with a number of rules
        body:
         application/xml:
          schema: dfwSection
      /{sectionId}:
        displayName: dfwL2SectionId
        description: L2 Firewall Operations on specific section specified by section ID
        uriParameters:
          sectionId:
            required: true
            displayName: sectionId
            description: The ID of the section beeing added, updated or deleted
        get:
          displayName: dfwL2SectionIdRead
          description: Read a specific section of the DFW config specified by Id
        put:
          displayName: dfwL2SectionIdUpdate
          description: |
            Updates a L2 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
        delete:
          displayName: dfwL2SectionIdDelete
          description: Deletes a L2 section and its content by ID
        /rules:
          displayName: dfwL2Rules
          description: Operations to add one or more L2 Rules
          post:
            displayName: dfwL2RulesAdd
            description: Add L2 Rule
            headers:
              If-match:
                required: true
                displayName: If-match
                description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
            body:
              application/xml:
                example: |
                  <rule disabled="" logged="">
                    <name></name>
                    <action></action>
                    <notes></notes>
                    <appliedToList>
                      <appliedTo>
                        <value></value>
                        <type></type>
                      </appliedTo>
                    </appliedToList>
                    <sources excluded="">
                      <source>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </source>
                    </sources>
                    <destinations excluded="">
                      <destination>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </destination>
                    </destinations>
                    <services>
                      <service>
                        <value></value>
                      </service>
                    </services>
                  </rule>
                schema: dfwRule
          /{ruleId}:
            displayName: dfwL2Rule
            description: Operations on L2 rules in sections identified by section Id and Rule Id
            uriParameters:
              ruleId:
                required: true
                displayName: ruleId
                description: The ID of the rule beeing read, updated or deleted
            get:
              displayName: dfwL2RuleRead
              description: Read the configuration of a specific rule identified by rule Id
            put:
              displayName: dfwL2RuleUpdate
              description: |
                Updates a L2 DFW Rule. To do this you need to read it first, make your changes,
                and then update the section by supplying the Etag value received in the read in the If-Match header
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
              body:
                application/xml:
            delete:
              displayName: dfwL2RuleDelete
              description: Delete a specific rule identified by rule Id
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
      /{sectionName}:
        displayName: dfwL2SectionName
        description: L3 Firewall Update Operations on specific section specified by section Name
        put:
          displayName: dfwL2SectionNameUpdate
          description: |
            Updates a L2 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
    /layer3redirectsections:
      displayName: layer3RedirectSections
      description: Layer3 redirect sections and rules
      post:
        displayName: layer3RedirectSectionsCreate
        description: Add L3 redirect section
        body:
          application/xml:
            example: |
              <section>
                <name></name>
                <action></action>
                <appliedToList>
                  <appliedTo>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </appliedTo>
                </appliedToList>
                <sectionId></sectionId>
              </section>
            schema: layer3RedirectSectionsCreate
      /{section}:
        displayName: section
        description: Layer3 redirect section
        uriParameters:
          section:
            required: true
            displayName: section
            description: Specify section by ID or name
        get:
          displayName: sectionRead
          description: Get L3 redirect section configuration
        put:
          displayName: sectionUpdate
          description: Modify L3 Redirect section. You will need to get the Etag value out of the GET first. Then pass the modified version of the whole redirect section configuration in the GET body
          headers:
            if-match:
              required: true
              displayName: if-match
              description: Needed value that you will receive in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
              example: |
                <section id="" name="" generationNumber="" timestamp="">
                  <rule id="" disabled="" logged="">
                    <name></name>
                    <action></action>
                    <appliedToList>
                      <appliedTo>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </appliedTo>
                    </appliedToList>
                    <sectionId></sectionId>
                  </rule>
                </section>
              schema: layer3RedirectSectionUpdate
        delete:
          displayName: sectionDelete
          description: Delete specified L3 redirect section
        /rules:
          displayName: rules
          description: L3 redirect rules for specified section
          post:
            displayName: rulesCreate
            description: Add L3 redirect rule
            body:
              application/xml:
                example: |
                  <section id="" name="" generationNumber="" timestamp="">
                    <name></name>
                    <action></action>
                    <appliedToList>
                      <appliedTo>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </appliedTo>
                    </appliedToList>
                    <sectionId></sectionId>
                  </section>
                schema: rulesCreate
          /{ruleID}:
            displayName: rule
            description: Rule for specified section
            uriParameters:
              ruleID:
                displayName: ruleID
                required: true
                description: Specified redirect rule
            get:
              displayName: ruleRead
              description: Get L3 redirect rule
            put:
              displayName: ruleUpdate
              description: Modify L3 redirect rule. You will need Etag value from the response header of GET call. Then, pass Etag value as the if-match header in PUT call
              headers:
                if-match:
                  required: true
                  displayName: if-match
                  description: Needed value that you will receive in the reponse of the read (GET) method in the Etag header
              body:
                application/xml:
                  example: |
                    <rule id="" disabled="" logged="">
                      <name></name>
                      <action></action>
                      <appliedToList>
                        <appliedTo>
                          <name></name>
                          <value></value>
                          <type></type>
                          <isValid></isValid>
                        </appliedTo>
                      </appliedToList>
                    </rule>
                  schema: ruleUpdate
            delete:
              displayName: ruleDelete
              description: Delete specified L3 redirect rule
    /layer3redirect/profiles:
      displayName: serviceInsertionProfiles
      description: Service Insertion profiles that can be applied to layer3 redirect rules
      get:
        displayName: serviceInsertionProfilesRead
        description: Retrieve the Service Insertion profiles
  /globalroot-0/state:
    displayName: dfwUpgrade
    description: Upgrading distributed firewall
    get:
      displayName: dfwUpgradeRead
      description: Get current state of firewall functioning after NSX upgrade
    put:
      displayName: dfwUpgradeEnable
      description: Enable distributed firewall
  /globalroot-0/status:
    displayName: dfwStatus
    description: Firewall configuration status
    get:
      displayName: dfwStatusRead
      description: Get firewall configuration status
    /layer3sections/{sectionID}:
      displayName: L3SectionStatus
      description: L3 section status
      uriParameters:
        sectionID:
          required: true
          displayName: sectionID
          description: Section ID
      get:
        displayName: L3SectionStatusRead
        description: Get Layer3 status
    /layer2sections/{sectionID}:
      displayName: L2SectionStatus
      description: L2 section status
      uriParameters:
        sectionID:
          required: true
          displayName: sectionID
          description: Section ID
      get:
        displayName: L2SectionStatusRead
        description: Get Layer2 status
  /globalroot-0/drafts:
    displayName: dfwDrafts
    description: Import and export firewall configurations
    post:
      displayName: dfwDraftsCreate
      description: Save a firewall configuration
      body:
        application/xml:
          example: |
            <firewallDraft name="">
              <description></description>
              <preserve></preserve>
              <mode></mode>
              <config>
                <contextId></contextId>
                <layer3Sections>
                  <section name="" >
                    <rule id="" disabled="true|false" logged="true|false">
                      <name></name>
                      <action></action>
                      <precedence></precedence>
                    </rule>
                  </section>
                </layer3Sections>
                <layer2Sections>
                  <section name="">
                    <rule id="" disabled="true|false" logged="true|false">
                      <name></name>
                      <action></action>
                      <precedence></precedence>
                    </rule>
                  </section>
                </layer2Sections>
              </config>
            </firewallDraft>
          schema: dfwDraftsCreate
    get:
      displayName: dfwSaveConfigRead
      description: Displays the draft IDs of all saved configurations
    /{draftID}:
      displayName: dfwDraft
      description: Specified saved firewall configuration
      uriParameters:
        draftID:
          required: true
          displayName: draftID
          description: Specified draft ID (retrieved through dfwDrafts GET call)
      get:
        displayName: dfwDraftRead
        description: Get a saved firewall configuration
      put:
        displayName: dfwDraftUpdate
        description: Update a saved firewall configuration
        body:
          application/xml:
            example: |
              <firewallDraft name="">
                <description></description>
                <preserve></preserve>
                <mode></mode>
                <config>
                  <contextId></contextId>
                  <layer3Sections>
                    <section name="" >
                      <rule id="" disabled="true|false" logged="true|false">
                        <name></name>
                        <action></action>
                        <precedence></precedence>
                      </rule>
                    </section>
                  </layer3Sections>
                  <layer2Sections>
                    <section name="">
                      <rule id="" disabled="true|false" logged="true|false">
                        <name></name>
                        <action></action>
                        <precedence></precedence>
                      </rule>
                    </section>
                  </layer2Sections>
                </config>
              </firewallDraft>
            schema: dfwDraftUpdate
      delete:
        displayName: dfwDraftDelete
        description: Delete a configuration
      /action/export:
        displayName: dfwConfigExport
        description: Export a configuration
        get:
          displayName: dfwConfigExport
          description: Export a configuration
          queryParameters:
              getLatestForUniversal:
                displayName: getLatestForUniversal
                description: Set to "true" to export the lasted universal draft from a secondary NSX manager.
                type: boolean
                required: false
      /action/import:
        displayName: dfwConfigImport
        description: Import a configuration
        post:
          displayName: dfwConfigImport
          description: Import a configuration
          body:
            application/xml:
              example: |
                <firewallDraft id="" name="" timestamp="">
                  <description></description>
                  <preserve></preserve>
                  <user></user>
                  <mode></mode>
                  <config timestamp="">
                    <contextId></contextId>
                    <layer3Sections>
                      <section name="" timestamp="">
                        <rule id="" disabled="true|false" logged="true|false">
                          <name></name>
                          <action></action>
                          <precedence></precedence>
                        </rule>
                      </section>
                    </layer3Sections>
                    <layer2Sections>
                      <section name="" timestamp="">
                        <rule id="" disabled="true|false" logged="true|false">
                          <name></name>
                          <action></action>
                          <precedence></precedence>
                        </rule>
                      </section>
                    </layer2Sections>
                    <generationNumber></generationNumber>
                  </config>
                </firewallDraft>
              schema: dfwConfigImport
  /stats/eventthresholds:
    displayName: dfwThresholds
    description: Memory and CPU thresholds for firewall
    get:
      displayName: dfwThresholdsRead
      description: Retrieve memory, CPU, and CPS thresholds for firewall
    put:
      displayName: dfwThresholdsUpdate
      description: Configure thresholds
      body:
        application/xml:
          example: |
            <eventThresholds>
              <cpu>
                <percentValue></percentValue>
              </cpu>
              <memory>
                <percentValue></percentValue>
              </memory>
              <connectionsPerSecond>
                <value></value>
              </connectionsPerSecond>
            </eventThresholds>
          schema: dfwThresholdsUpdate
  /config/globalconfiguration:
    displayName: dfwPerformance
    description: Tuning firewall performance
    get:
      displayName: dfwPerformanceRead
      description: Query RuleOptimize and TCPStrict flags
    put:
      displayName: dfwPerformanceUpdate
      description: Set RuleOptimize and TCPStrict flags in body to improve performance
      body:
        application/xml:
          example: |
            <globalConfiguration>
              <layer3RuleOptimize></layer3RuleOptimize>
              <layer2RuleOptimize></layer2RuleOptimize>
              <tcpStrictOption></tcpStrictOption>
            </globalConfiguration>
          schema: dfwPerformanceUpdate
  /forceSync/{ID}:
    displayName: dfwSync
    description: Synchronize hosts and clusters with the last good configuration in NSX Mgr database
    uriParameters:
      ID:
        required: true
        displayName: ID
        description: Specified host or cluster to synchronize
    post:
      displayName: dfwSync
      description: Force sync host/cluster
  /{domainID}/enable/{truefalse}:
    displayName: dfwEnableDisableAPI
    description: Enable or disable firewall components on a cluster
    uriParameters:
      domainID:
        required: true
        displayName: domainID
        description: Specified cluster
      truefalse:
        required: true
        displayName: truefalse
        description: Set parameter to true/false to enable/disable
    post:
      displayName: dfwEnableDisableAPI
      description: Enable or disable firewall components on a cluster
  /{contextId}/config/ipfix:
    displayName: dfwIPFix
    description: Export specific flows directly from firewall to a flow collector
    uriParameters:
      contextId:
        displayName: contextId
        description: Specified context
    get:
      displayName: dfwIPFixRead
      description: Query IPFix configuration
    put:
      displayName: dfwIPFixUpdate
      description: Configure IPFix
      body:
        application/xml:
          example: |
            <ipfixConfiguration>
              <contextId></contextId>
              <ipfixEnabled></ipfixEnabled>
              <observationDomainId></observationDomainId>
              <flowTimeout></flowTimeout>
              <collector>
                <ip></ip>
                <port></port>
              </collector>
            </ipfixConfiguration>
          schema: dfwIPFixUpdate
    delete:
      displayName: dfwIPFixDelete
      description: Deleting IPFix configuration resets the config to default values
/4.0/services/spoofguard/policies:
  displayName: spoofGuardPolicies
  description: SpoofGuard policies
  post:
    displayName: spoofGuardPoliciesCreate
    description: Create a SpoofGuard policy to specify the operation mode for networks.
    body:
      application/xml:
        example: |
          <spoofguardPolicy>
            <name></name>
            <description></description>
            <operationMode></operationMode>
            <enforcementPoint>
              <id></id>
              <name></name>
              <type></type>
            </enforcementPoint>
            <allowLocalIPs></allowLocalIPs>
          </spoofguardPolicy>
        schema: spoofGuardPoliciesCreate
  get:
    displayName: spoofGuardPoliciesRead
    description: Retrieve all SpoofGuard policies
  /{policyID}:
    displayName: spoofGuardPolicy
    description: Specified policy
    post:
      displayName: spoofGuardPolicyApprove
      description: Use query parameters to perform operations on a policy
      queryParameters:
        action:
          required: true
          displayName: action
          description: set to "approve" along with specified IP addresses in body to approve them, or set to "publish" to publish the approved IP addresses
      body:
        application/xml:
          example: |
            <spoofguardList>
              <spoofguard>
                <id></id>
                <vnicUuid></vnicUuid>
                <approvedIpAddress>
                  <ipAddress></ipAddress>
                </approvedIpAddress>
                <approvedMacAddress></approvedMacAddress>
                <approvedBy></approvedBy>
                <approvedOn></approvedOn>
                <publishedIpAddress>
                  <ipAddress></ipAddress>
                </publishedIpAddress>
                <publishedMacAddress></publishedMacAddress>
                <publishedBy></publishedBy>
                <publishedOn></publishedOn>
              </spoofguard>
            </spoofguardList>
          schema: spoofGuardPolicyApprove
    get:
      displayName: spoofGuardPolicyRead
      description: Retrieve policy information, or use the query parameters to perform operations
      queryParameters:
        list:
          displayName: list
          description: Use to retrieve IP addresses for specified state (ACTIVE|INACTIVE|PUBLISHED|UNPUBLISHED|REVIEW_PENDING|DUPLICATE)
    put:
      displayName: spoofGuardPolicyUpdate
      description: Modify SpoofGuard policy
      body:
        application/xml:
          example: |
            <spoofguardPolicy>
              <policyId></policyId>
              <name></name>
              <description></description>
              <operationMode></operationMode>
              <enforcementPoint>
                <id></id>
                <name></name>
                <type></type>
              </enforcementPoint>
              <allowLocalIPs></allowLocalIPs>
            </spoofguardPolicy>
          schema: spoofGuardPolicyUpdate
    delete:
      displayName: spoofGuardPolicyDelete
      description: Delete a policy
/2.1/app/flow:
  displayName: flowMonitoring
  description: Operations on flowdata
  /flowstats:
    displayName: flowStats
    description: Retrieve flow statistics for a datacenter, port group, VM, or vNIC
    get:
      displayName: flowStatsRead
      description: Retrieve flow statistics for a datacenter, port group, VM, or vNIC
      queryParameters:
        contextId:
          displayName: contextId
          description: vc-moref-id of the datacenter, portgroup, vm, or UUID of the vNIC for which traffic flow is to be retrieved
        flowType:
          displayName: flowType
          description: Type of flow to be retrieved (TCP_UDP|LAYER2|LAYER3)
        startTime:
          displayName: startTime
          description: Flows with start time greater than specified time are retrieved
        endTime:
          displayName: endTime
          description: Flows with start time lower than specified time are retrieved
        startIndex:
          type: integer
          displayName: startIndex
          description: (optional) Specifies starting point for retrieval. If not specified, start from the beginning by default
          default: 0
        pageSize:
          type: integer
          displayName: pageSize
          description: (optional) Limit the max number of entries returned. Valid range is 1-1024
          default: 256
    /info:
      displayName: flowStatsInfo
      description: Flow statistics info
      get:
        displayName: flowStatsInfoRead
        description: Retrieve flow statistics info
  /config:
    displayName: flowConfig
    description: Configure flow Monitoring
    get:
      displayName: flowConfigRead
      description: Retrieve flow details
    put:
      displayName: flowsConfigCreate
      description: Update specified flows
      body:
        application/xml:
          example: |
            <FlowConfiguration>
              <collectFlows></collectFlows>
              <ignoreBlockedFlows></ignoreBlockedFlows>
              <ignoreLayer2Flows></ignoreLayer2Flows>
              <sourceIPs></sourceIPs>
              <sourceContainer>
                <name></name>
                <id></id>
                <type></type>
              </sourceContainer>
              <destinationIPs></destinationIPs>
              <destinationContainer>
                <name></name>
                <id></id>
                <type></type>
              </destinationContainer>
              <destinationPorts></destinationPorts>
              <service>
                <name></name>
                <id></id>
              </service>
            </FlowConfiguration>
          schema: flowsExcludeCreate
  /{contextId}:
    displayName: flowContext
    description: Flow configuration by contextId
    delete:
      displayName: flowContextDelete
      description: Delete flow records for context by contextId
/2.1/app/excludelist:
  displayName: dfwExclusion
  description: Exclude VM's from firewall protection
  get:
    displayName: dfwExclusionRead
    description: Retrieve the set of vm's in the exclusion list
  /{memberID}:
    displayName: dfwExcludeMember
    description: Exclude VM's from firewall protection
    uriParameters:
      memberID:
        displayName: memberID
        description: vc-moref-id of a virtual machine
    put:
      displayName: dfwExclusionUpdate
      description: Add a vm to the exclusion list
    delete:
      displayName: dfwExclusionDelete
      description: Delete a vm from exclusion list
/4.0/edges:
  displayName: nsxEdges
  description: Installed NSX Edges in your inventory
  post:
    displayName: nsxEdgesCreate
    description: Install NSX Edge services gateway or logical router, depending on request body
    queryParameters:
        isUniversal:
          displayName: isUniversal
          description: Set to "true" when creating a universal logical router. Note the <type> in the request body must be "DISTRIBUTED_ROUTER"
          type: boolean
          required: false
    body:
      application/xml:
        example: |
          <edge>
            <datacenterMoid></datacenterMoid>
            <name></name>
            <description></description>
            <tenant></tenant>
            <fqdn></fqdn>
            <vseLogLevel></vseLogLevel>
            <enableAesni></enableAesni>
            <enableFips></enableFips>
            <appliances>
              <applianceSize></applianceSize>
              <enableCoreDump></enableCoreDump>
              <appliance>
                <resourcePoolId></resourcePoolId>
                <datastoreId></datastoreId>
                <hostId></hostId>
                <vmFolderId></vmFolderId>
                <customField>
                  <key></key>
                  <value></value>
                </customField>
                <cpuReservation>
                  <limit></limit>
                  <reservation></reservation>
                  <shares></shares>
                </cpuReservation>
                <memoryReservation>
                  <limit></limit>
                  <reservation></reservation>
                  <shares></shares>
                </memoryReservation>
              </appliance>
            </appliances>
            <vnics>
              <vnic>
                <index></index>
                <name></name>
                <type></type>
                <portgroupId></portgroupId>
                <addressGroups>
                  <addressGroup>
                    <primaryAddress></primaryAddress>
                    <secondaryAddresses>
                      <ipAddress></ipAddress>
                    </secondaryAddresses>
                    <subnetMask></subnetMask>
                  </addressGroup>
                </addressGroups>
                <macAddress>
                  <edgeVmHaIndex></edgeVmHaIndex>
                  <value></value>
                </macAddress>
                <fenceParameter>
                  <key></key>
                  <value></value>
                </fenceParameter>
                <mtu></mtu>
                <enableProxyArp></enableProxyArp>
                <enableSendRedirects></enableSendRedirects>
                <isConnected></isConnected>
                <inShapingPolicy>
                  <averageBandwidth></averageBandwidth>
                  <peakBandwidth></peakBandwidth>
                  <burstSize></burstSize>
                  <enabled></enabled>
                  <inherited></inherited>
                </inShapingPolicy>
                <outShapingPolicy>
                  <averageBandwidth></averageBandwidth>
                  <peakBandwidth></peakBandwidth>
                  <burstSize></burstSize>
                  <enabled></enabled>
                  <inherited></inherited>
                </outShapingPolicy>
              </vnic>
            </vnics>
            <cliSettings>
              <userName></userName>
              <password></password>
              <remoteAccess></remoteAccess>
            </cliSettings>
            <autoConfiguration>
              <enabled></enabled>
              <rulePriority></rulePriority>
            </autoConfiguration>
            <dnsClient>
              <primaryDns></primaryDns>
              <secondaryDns></secondaryDns>
              <domainName></domainName>
            </dnsClient>
            <queryDaemon>
              <enabled></enabled>
              <port></port>
            </queryDaemon>
          </edge>
        schema: nsxEdgesCreate
  get:
    displayName: nsxEdgesRead
    description: Retrieve a list of NSX Edges in your inventory or use the query parameters to filter results by datacenter or port group
    queryParameters:
      datacenter:
        displayName: datacenter
        description: Retrieve Edges by datacenter MoId
      tenant:
        displayName: tenant
        description: Retrieve Edges on specified tenant (by tenant ID)
      pg:
        displayName: pg
        description: Retrieve Edges with one interface on specified port group (by port group MoId)
  /{edgeId}:
    displayName: nsxEdge
    description: NSX Edge operations
    uriParameters:
      edgeId:
        required: true
        displayName: edgeId
        description: Specified Edge ID
    post:
      displayName: nsxEdgeCreate
      description: Manage NSX Edge
      queryParameters:
        action:
          displayName: action
          required: true
          description: Options include "forcesync" (resync Edge vm's), "redeploy" ()
    get:
      displayName: nsxEdgeRead
      description: Retrieve Edge details
      queryParameters:
        isUniversal:
          displayName: isUniversal
          description: Filter read of Edges to display only universal logical routers
          type: boolean
          required: false
    put:
      displayName: nsxEdgeUpdate
      description: Update the NSX Edge configuration
      body:
        application/xml:
          example: |
            <edge>
              <id></id>
              <description></description>
              <datacenterMoid></datacenterMoid>
              <name></name>
              <fqdn></fqdn>
              <enableAesni></enableAesni>
              <enableFips></enableFips>
              <vseLogLevel></vseLogLevel>
              <vnics>
                <vnic>
                  <index></index>
                  <name></name>
                  <type></type>
                  <portgroupId></portgroupId>
                  <addressGroups>
                    <addressGroup>
                      <primaryAddress></primaryAddress>
                      <secondaryAddresses>
                        <ipAddress></ipAddress>
                      </secondaryAddresses>
                      <subnetMask></subnetMask>
                    </addressGroup>
                  </addressGroups>
                  <mtu></mtu>
                  <enableProxyArp></enableProxyArp>
                  <enableSendRedirects></enableSendRedirects>
                  <isConnected></isConnected>
                  <inShapingPolicy>
                    <averageBandwidth></averageBandwidth>
                    <peakBandwidth></peakBandwidth>
                    <burstSize></burstSize>
                    <enabled></enabled>
                    <inherited></inherited>
                  </inShapingPolicy>
                  <outShapingPolicy>
                    <averageBandwidth></averageBandwidth>
                    <peakBandwidth></peakBandwidth>
                    <burstSize></burstSize>
                    <enabled></enabled>
                    <inherited></inherited>
                  </outShapingPolicy>
                </vnic>
              </vnics>
              <appliances>
                <applianceSize></applianceSize>
                <appliance>
                  <resourcePoolId></resourcePoolId>
                  <datastoreId></datastoreId>
                  <vmFolderId></vmFolderId>
                </appliance>
              </appliances>
              <cliSettings>
                <remoteAccess></remoteAccess>
                <userName></userName>
              </cliSettings>
              <features>
                <firewall>
                  <defaultPolicy>
                    <action></action>
                    <loggingEnabled></loggingEnabled>
                  </defaultPolicy>
                  <rules>
                    <rule>
                      <id></id>
                      <ruleTag></ruleTag>
                      <name></name>
                      <ruleType></ruleType>
                      <source>
                        <exclude></exclude>
                        <groupingObjectId></groupingObjectId>
                      </source>
                      <destination></destination>
                      <application>
                        <applicationId></applicationId>
                      </application>
                      <action></action>
                      <enabled></enabled>
                      <loggingEnabled></loggingEnabled>
                      <matchTranslated></matchTranslated>
                    </rule>
                  </rules>
                </firewall>
                <routing>
                  <staticRouting>
                    <defaultRoute>
                      <vnic></vnic>
                      <gatewayAddress></gatewayAddress>
                      <description></description>
                    </defaultRoute>
                    <staticRoutes>
                      <route>
                        <vnic></vnic>
                        <network></network>
                        <nextHop></nextHop>
                        <type></type>
                      </route>
                    </staticRoutes>
                  </staticRouting>
                  <ospf>
                    <enabled></enabled>
                  </ospf>
                </routing>
                <highAvailability>
                  <enabled></enabled>
                  <declareDeadTime></declareDeadTime>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                </highAvailability>
                <syslog>
                  <protocol></protocol>
                  <serverAddresses>
                    <ipAddress></ipAddress>
                  </serverAddresses>
                </syslog>
                <ipsec>
                  <enabled></enabled>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                  <sites>
                    <site>
                      <enabled></enabled>
                      <name></name>
                      <localId></localId>
                      <localIp></localIp>
                      <peerId></peerId>
                      <encryptionAlgorithm></encryptionAlgorithm>
                      <mtu></mtu>
                      <enablePfs></enablePfs>
                      <dhGroup></dhGroup>
                      <localSubnets>
                        <subnet></subnet>
                      </localSubnets>
                      <peerSubnets>
                        <subnet></subnet>
                      </peerSubnets>
                      <psk></psk>
                      <authenticationMode></authenticationMode>
                    </site>
                  </sites>
                  <global>
                    <caCertificates/>
                    <crlCertificates/>
                  </global>
                </ipsec>
                <dhcp>
                  <enabled></enabled>
                  <staticBindings>
                    <staticBinding>
                      <autoConfigureDNS></autoConfigureDNS>
                      <bindingId></bindingId>
                      <vmId></vmId>
                      <vnicId></vnicId>
                      <hostname></hostname>
                      <ipAddress></ipAddress>
                      <defaultGateway></defaultGateway>
                      <leaseTime></leaseTime>
                    </staticBinding>
                  </staticBindings>
                  <ipPools>
                    <ipPool>
                      <autoConfigureDNS></autoConfigureDNS>
                      <poolId></poolId>
                      <ipRange></ipRange>
                      <defaultGateway></defaultGateway>
                      <leaseTime></leaseTime>
                    </ipPool>
                  </ipPools>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                </dhcp>
                <nat>
                  <natRules>
                    <natRule>
                      <ruleId></ruleId>
                      <ruleTag></ruleTag>
                      <ruleType></ruleType>
                      <action></action>
                      <vnic></vnic>
                      <originalAddress></originalAddress>
                      <translatedAddress></translatedAddress>
                      <loggingEnabled></loggingEnabled>
                      <enabled></enabled>
                      <protocol></protocol>
                      <originalPort></originalPort>
                      <translatedPort></translatedPort>
                    </natRule>
                  </natRules>
                </nat>
              </features>
              <autoConfiguration>
                <enabled></enabled>
                <rulePriority></rulePriority>
              </autoConfiguration>
            </edge>
          schema: nsxEdgeUpdate
    delete:
      displayName: nsxEdgeDelete
      description: Delete specified Edge from database. Associated appliances are also deleted
    /dnsclient:
      displayName: dns
      description: DNS settings (primary/secondary and search domain) of an Edge
      put:
        displayName: nsxEdgeDnsUpdate
        description: Update Edge DNS settings
        body:
          application/xml:
            example: |
              <dnsClient>
                <primaryDns></primaryDns>
                <secondaryDns></secondaryDns>
                <domainName></domainName>
              </dnsClient>
            schema: nsxEdgeDnsUpdate
    /aesni:
      displayName: aesni
      description: AESNI Setting
      post:
        displayName: aesniCreate
        description: Modify AESNI setting
        queryParameters:
          enable:
            type: boolean
            required: true
            displayName: enable
    /coredump:
      displayName: coreDump
      description: Enabling core-dump feature results in deployment of inbuilt extra disk to save core-dump files. 1GB for compact edge and 8GB for other types. Disabling detaches the disk
      post:
        displayName: coreDumpCreate
        description: Modify core dump setting
    /fips:
      displayName: fips
      description: FIPs setting
      post:
        displayName: fipsCreate
        description: Modify FIPs setting
        queryParameters:
          enable:
            type: boolean
            required: true
            displayName: enable
    /logging:
      displayName: logging
      description: Log setting
      post:
        displayName: loggingCreate
        description: Modify log setting
        queryParameters:
          level:
            displayName: level
    /summary:
      displayName: summary
      description: Edge summary
      get:
        displayName: summaryRead
        description: Retrieve details about the specified Edge
    /status:
      displayName: status
      description: Edge status
      get:
        displayName: statusRead
        description: Retrieve the status of the specified Edge
        queryParameters:
          getlatest:
            type: boolean
            displayName: getlatest
            description: true = fetch the status live from NSX Edge, false = fetch the latest available status from database
          detailed:
            type: boolean
            displayName: detailed
            description: true = fetch detailed status per feature, false = aggregated summary of status per feature
          preRulesStatus:
            type: boolean
            displayName: preRulesStatus
            description: true = fetch detailed output for pre rules in addition to the regular output
    /techsupportlogs:
      displayName: techSupportLogs
      description: Tech support logs for specified Edge
      get:
        displayName: techSupportLogsRead
        description: Retrieve the tech support logs for Edge
    /clisettings:
      displayName: cliSettings
      description: Manage CLI credentials and access
      put:
        displayName: cliSettingsUpdate
        description: Modify CLI credentials and enable/disable SSH for Edge
        body:
          application/xml:
            example: |
              <cliSettings>
                <userName></userName>
                <password></password>
                <remoteAccess></remoteAccess>
                <passwordExpiry></passwordExpiry>
                <sshLoginBannerText></sshLoginBannerText>
              </cliSettings>
            schema: cliSettingsUpdate
    /cliremoteaccess:
      displayName: cliRemote
      description: Enable or disable SSH on the Edge
      post:
        displayName: cliRemoteCreate
        description: Change CLI remote access
        queryParameters:
          enable:
            type: boolean
            required: true
            displayName: enable
    /firewall/config:
      displayName: nsxEdgeFirewallConfig
      description: Configure firewall for an Edge
      get:
        displayName: nsxEdgeFirewallConfigRead
        description: Read the firewall configuration
      put:
        displayName: nsxEdgeFirewallConfigUpdate
        description: Configure firewall for an Edge
        body:
          application/xml:
            example: |
              <firewall>
                <defaultPolicy>
                  <action></action>
                  <loggingEnabled></loggingEnabled>
                </defaultPolicy>
                <globalConfig>
                  <tcpPickOngoingConnections></tcpPickOngoingConnections>
                  <tcpAllowOutOfWindowPackets></tcpAllowOutOfWindowPackets>
                  <tcpSendResetForClosedVsePorts></tcpSendResetForClosedVsePorts>
                  <dropInvalidTraffic></dropInvalidTraffic>
                  <logInvalidTraffic></logInvalidTraffic>
                  <tcpTimeoutOpen></tcpTimeoutOpen>
                  <tcpTimeoutEstablished></tcpTimeoutEstablished>
                  <tcpTimeoutClose></tcpTimeoutClose>
                  <udpTimeout></udpTimeout>
                  <icmpTimeout></icmpTimeout>
                  <icmp6Timeout></icmp6Timeout>
                  <ipGenericTimeout></ipGenericTimeout>
                </globalConfig>
                <rules>
                  <rule>
                    <ruleTag></ruleTag>
                    <name></name>
                    <source>
                      <vnicGroupId></vnicGroupId>
                      <groupingObjectId></groupingObjectId>
                      <ipAddress></ipAddress>
                    </source>
                    <destination>
                      <groupingObjectId></groupingObjectId>
                      <vnicGroupId></vnicGroupId>
                      <groupingObjectId></groupingObjectId>
                      <ipAddress></ipAddress>
                    </destination>
                    <application>
                      <applicationId></applicationId>
                      <service>
                        <protocol></protocol>
                        <port></port>
                        <sourcePort></sourcePort>
                      </service>
                    </application>
                    <matchTranslated></matchTranslated>
                    <direction></direction>
                    <action></action>
                    <enabled></enabled>
                    <loggingEnabled></loggingEnabled>
                    <description></description>
                  </rule>
                </rules>
              </firewall>
            schema: nsxEdgeFirewallConfigUpdate
      delete:
        displayName: nsxEdgeFirewallConfigDelete
        description: Delete firewall configuration
      /rules:
        displayName: firewallRules
        description: Firewall rules
        post:
          displayName: firewallRulesCreate
          description: Add one or more rules. You can add a rule above a specific rule using the query parameter, indicating the desired ruleID.
          queryParameters:
            aboveRuleId:
              displayName: aboveRuleId
              description: rule Id
          body:
            application/xml:
              example: |
                <firewall>
                  <defaultPolicy>
                    <action></action>
                    <loggingEnabled></loggingEnabled>
                  </defaultPolicy>
                  <globalConfig>
                    <tcpPickOngoingConnections></tcpPickOngoingConnections>
                    <tcpAllowOutOfWindowPackets></tcpAllowOutOfWindowPackets>
                    <tcpSendResetForClosedVsePorts></tcpSendResetForClosedVsePorts>
                    <dropInvalidTraffic></dropInvalidTraffic>
                    <logInvalidTraffic></logInvalidTraffic>
                    <tcpTimeoutOpen></tcpTimeoutOpen>
                    <tcpTimeoutEstablished></tcpTimeoutEstablished>
                    <tcpTimeoutClose></tcpTimeoutClose>
                    <udpTimeout></udpTimeout>
                    <icmpTimeout></icmpTimeout>
                    <icmp6Timeout></icmp6Timeout>
                    <ipGenericTimeout></ipGenericTimeout>
                  </globalConfig>
                  <rules>
                    <rule>
                      <ruleTag></ruleTag>
                      <name></name>
                      <source>
                        <vnicGroupId></vnicGroupId>
                        <groupingObjectId></groupingObjectId>
                        <ipAddress></ipAddress>
                      </source>
                      <destination>
                        <groupingObjectId></groupingObjectId>
                        <vnicGroupId></vnicGroupId>
                        <groupingObjectId></groupingObjectId>
                        <ipAddress></ipAddress>
                      </destination>
                      <application>
                        <applicationId></applicationId>
                        <service>
                          <protocol></protocol>
                          <port></port>
                          <sourcePort></sourcePort>
                        </service>
                      </application>
                      <matchTranslated></matchTranslated>
                      <direction></direction>
                      <action></action>
                      <enabled></enabled>
                      <loggingEnabled></loggingEnabled>
                      <description></description>
                    </rule>
                  </rules>
                </firewall>
              schema: firewallRulesCreate
        /{ruleId}:
          displayName: firewallRule
          description: Specific firewall rule
          uriParameters:
            ruleId:
              required: true
              displayName: ruleId
              description: Rule ID
          get:
            displayName: firewallRuleRead
            description: Retrieve specific rule
          put:
            displayName: firewallRuleUpdate
            description: Modify a specific firewall rule
            body:
              application/xml:
                example: |
                  <rule>
                    <ruleTag></ruleTag>
                    <name></name>
                    <source>
                      <vnicGroupId></vnicGroupId>
                      <groupingObjectId></groupingObjectId>
                    </source>
                    <destination>
                      <groupingObjectId></groupingObjectId>
                      <vnicGroupId></vnicGroupId>
                    </destination>
                    <application>
                      <applicationId></applicationId>
                    </application>
                    <matchTranslated></matchTranslated>
                    <direction></direction>
                    <action></action>
                    <enabled></enabled>
                    <loggingEnabled></loggingEnabled>
                    <description></description>
                  </rule>
                schema: firewallRuleUpdate
          delete:
            displayName: firewallRuleDelete
            description: Delete firewall rule
      /global:
        displayName: globalFirewallConfig
        description: NSX Edge global firewall configuration
        get:
          displayName: globalFirewallConfigRead
          description: Retrieve the firewall default policy for an Edge
        put:
          displayName: globalFirewallConfigUpdate
          description: Configure firewall global config for an Edge
          body:
            application/xml:
              example:
                <globalConfig>
                  <tcpPickOngoingConnections></tcpPickOngoingConnections>
                  <tcpAllowOutOfWindowPackets></tcpAllowOutOfWindowPackets>
                  <tcpSendResetForClosedVsePorts></tcpSendResetForClosedVsePorts>
                  <dropInvalidTraffic></dropInvalidTraffic>
                  <logInvalidTraffic></logInvalidTraffic>
                  <tcpTimeoutOpen></tcpTimeoutOpen>
                  <tcpTimeoutEstablished></tcpTimeoutEstablished>
                  <tcpTimeoutClose></tcpTimeoutClose>
                  <udpTimeout></udpTimeout>
                  <icmpTimeout></icmpTimeout>
                  <icmp6Timeout></icmp6Timeout>
                  <ipGenericTimeout></ipGenericTimeout>
                </globalConfig>
              schema: globalFirewallConfigUpdate
      /defaultpolicy:
        displayName: defaultFirewallPolicy
        description: Default firewall policy for an Edge
        get:
          displayName: defaultFirewallPolicyRead
          description: Retrieve default firewall policy
        put:
          displayName: defaultFirewallPolicyUpdate
          description: Configure default firewall policy
          body:
            application/xml:
              example: |
                <firewallDefaultPolicy>
                  <action></action>
                  <loggingEnabled></loggingEnabled>
                </firewallDefaultPolicy>
              schema: defaultFirewallPolicyUpdate
    /firewall/statistics/firewall:
      displayName: firewallStatistics
      description: Edge firewall statistics
      get:
        displayName: firewallStatisticsRead
        description: Retrieve number of ongoing connections for the firewall config
        queryParameters:
          interval:
            displayName: interval
            description: 60 min by default, can be given as 1 -60 min, oneDay | oneWeek | oneMonth | oneYear
    /firewall/statistics/{ruleId}:
      displayName: firewallRuleStatistics
      description: Statistics for firewall rules
      uriParameters:
        ruleId:
          displayName: ruleId
          required: true
          description: Specified rule
      get:
        displayName: firewallRuleStatisticsRead
        description: Retrieve stats for firewall rule
    /nat/config:
      displayName: edgeNat
      description: SNAT and DNAT rules for NSX Edge
      put:
        displayName: edgeNatConfig
        description: Configure SNAT and DNAT rules for an Edge
        body:
          application/xml:
            example: |
              <nat>
                <natRules>
                  <natRule>
                    <ruleTag></ruleTag>
                    <action></action>
                    <vnic></vnic>
                    <originalAddress></originalAddress>
                    <translatedAddress></translatedAddress>
                    <loggingEnabled></loggingEnabled>
                    <enabled></enabled>
                    <description></description>
                    <protocol></protocol>
                    <translatedPort></translatedPort>
                    <originalPort></originalPort>
                  </natRule>
                </natRules>
              </nat>
            schema: edgeNatConfig
      get:
        displayName: edgeNatRead
        description: Query SNAT and DNAT rules for an Edge
      delete:
        displayName: edgeNatDelete
        description: Delete all NAT rules for an Edge
      /rules:
        displayName: edgeNatRules
        description: NAT rules
        post:
          displayName: edgeNatRulesCreate
          description: Add a NAT rule above a specific rule in the NAT rules table (using aboveRuleId) or append NAT rules to the bottom
          queryParameters:
            aboveRuleId:
              displayName: aboveRuleId
              description: Specified rule ID. If the ID does not exist, Edge Manager displays an error
          body:
            application/xml:
              example: |
                <natRules>
                  <natRule>
                    <action></action>
                    <vnic></vnic>
                    <originalAddress></originalAddress>
                    <translatedAddress></translatedAddress>
                    <loggingEnabled></loggingEnabled>
                    <enabled></enabled>
                    <description></description>
                    <protocol></protocol>
                    <translatedPort></translatedPort>
                    <originalPort></originalPort>
                  </natRule>
                </natRules>
              schema: edgeNatRulesCreate
        /{ruleID}:
          displayName: edgeNatRule
          description: Specified NAT rule
          uriParameters:
            ruleID:
              required: true
              displayName: ruleID
              description: Specified rule ID
          put:
            displayName: edgeNatRuleUpdate
            description: Modify a NAT rule
            body:
              application/xml:
                example: |
                  <natRule>
                    <action></action>
                    <vnic></vnic>
                    <originalAddress></originalAddress>
                    <translatedAddress></translatedAddress>
                    <loggingEnabled></loggingEnabled>
                    <enabled></enabled>
                    <description></description>
                    <protocol></protocol>
                    <translatedPort></translatedPort>
                    <originalPort></originalPort>
                  </natRule>
                schema: edgeNatRuleUpdate
          delete:
            displayName: edgeNatRuleUpdate
            description: Delete a NAT rule
    /routing/config:
      displayName: routingConfig
      description: Static and dynamic routing for each NSX Edge
      get:
        displayName: routingConfigRead
        description: Retrieve routes
      put:
        displayName: routingConfigUpdate
        description: Configure globalConfig, staticRouting, OSPG, BGP, and IS-IS
        body:
          application/xml:
            example: |
              <routing>
                <routingGlobalConfig>
                  <ecmp></ecmp>
                  <routerId></routerId>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                  <ipPrefixes>
                    <ipPrefix>
                      <name></name>
                      <ipAddress></ipAddress>
                    </ipPrefix>
                  </ipPrefixes>
                </routingGlobalConfig>
                <staticRouting>
                  <staticRoutes>
                    <route>
                      <description></description>
                      <vnic></vnic>
                      <network></network>
                      <nextHop></nextHop>
                      <mtu></mtu>
                    </route>
                  </staticRoutes>
                  <defaultRoute>
                    <description></description>
                    <vnic></vnic>
                    <gatewayAddress></gatewayAddress>
                    <mtu></mtu>
                  </defaultRoute>
                </staticRouting>
                <ospf>
                  <enabled></enabled>
                  <defaultOriginate></defaultOriginate>
                  <gracefulRestart></gracefulRestart>
                  <ospfAreas>
                    <ospfArea>
                      <areaId></areaId>
                      <type></type>
                      <authentication>
                        <type></type>
                        <value></value>
                      </authentication>
                    </ospfArea>
                  </ospfAreas>
                  <ospfInterfaces>
                    <ospfInterface>
                      <vnic></vnic>
                      <areaId></areaId>
                      <helloInterval></helloInterval>
                      <deadInterval></deadInterval>
                      <priority></priority>
                      <cost></cost>
                    </ospfInterface>
                  </ospfInterfaces>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </ospf>
                <isis>
                  <enabled></enabled>
                  <systemId></systemId>
                  <areaIds>
                    <areaId></areaId>
                  </areaIds>
                  <isType></isType>
                  <domainPassword></domainPassword>
                  <areaPassword></areaPassword>
                  <isisInterfaces>
                    <isisInterface>
                      <vnic></vnic>
                      <meshGroup></meshGroup>
                      <helloInterval></helloInterval>
                      <helloMultiplier></helloMultiplier>
                      <lspInterval></lspInterval>
                      <metric></metric>
                      <priority></priority>
                      <circuitType></circuitType>
                      <password></password>
                    </isisInterface>
                  </isisInterfaces>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </isis>
                <bgp>
                  <enabled></enabled>
                  <localAS></localAS>
                  <bgpNeighbours>
                    <bgpNeighbour>
                      <ipAddress></ipAddress>
                      <remoteAS></remoteAS>
                      <weight></weight>
                      <holdDownTimer></holdDownTimer>
                      <keepAliveTimer></keepAliveTimer>
                      <password></password>
                      <bgpFilters>
                        <bgpFilter>
                          <direction></direction>
                          <action></action>
                          <network></network>
                          <ipPrefixGe></ipPrefixGe>
                          <ipPrefixLe></ipPrefixLe>
                        </bgpFilter>
                      </bgpFilters>
                    </bgpNeighbour>
                  </bgpNeighbours>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </bgp>
              </routing>
            schema: routingConfigUpdate
      delete:
        displayName: routingConfigDelete
        description: Delete the routing config stored in the NSX Mgr database and the default routes from the specified NSX Edge appliance
      /global:
        displayName: routingGlobalConfig
        description: Global configuration
        put:
          displayName: routingGlobalConfigUpdate
          description: Configure global route
          body:
            application/xml:
              example: |
                <routingGlobalConfig>
                  <routerId></routerId>
                  <ecmp></ecmp>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                  <ipPrefixes>
                    <ipPrefix>
                      <name></name>
                      <ipAddress></ipAddress>
                    </ipPrefix>
                  </ipPrefixes>
                </routingGlobalConfig>
              schema: routingGlobalConfigUpdate
        get:
          displayName: routingGlobalConfigRead
          description: Retrieve routing info from NSX Mgr database (default route settings, static route configurations)
      /static:
        displayName: routingConfigStatic
        description: Static and default routes for specified Edge
        get:
          displayName: routingConfigStaticRead
          description: Read static and default routes
        put:
          displayName: routingConfigStaticUpdate
          description: Configure static and default routes
          body:
            application/xml:
              example: |
                <staticRouting>
                  <staticRoutes>
                    <route>
                      <description></description>
                      <vnic></vnic>
                      <network></network>
                      <nextHop></nextHop>
                      <mtu></mtu>
                    </route>
                  </staticRoutes>
                  <defaultRoute>
                    <description></description>
                    <vnic></vnic>
                    <gatewayAddress></gatewayAddress>
                    <mtu></mtu>
                  </defaultRoute>
                </staticRouting>
              schema: routingConfigStaticUpdate
        delete:
          displayName: routingConfigStaticDelete
          description: Delete both static and default routing config stored in the NSX Mgr database
      /ospf:
        displayName: routingOSPF
        description: OSPF Routing for NSX Edge
        get:
          displayName: routingOSPFRead
          description: Query OSPF config
        put:
          displayName: routingOSPFUpdate
          description: Configure OSPF
          body:
            application/xml:
              example: |
                <ospf>
                  <enabled></enabled>
                  <ospfAreas>
                    <ospfArea>
                      <areaId></areaId>
                      <type></type>
                      <authentication>
                        <type></type>
                        <value></value>
                      </authentication>
                    </ospfArea>
                  </ospfAreas>
                  <ospfInterfaces>
                    <ospfInterface>
                      <vnic></vnic>
                      <areaId></areaId>
                      <helloInterval></helloInterval>
                      <deadInterval></deadInterval>
                      <priority></priority>
                      <cost></cost>
                    </ospfInterface>
                  </ospfInterfaces>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </ospf>
              schema: routingOSPFUpdate
        delete:
          displayName: routingOSPFDelete
          description: Delete OSPF routing
      /isis:
        displayName: routingISIS
        description: IS-IS Routes for NSX Edge
        get:
          displayName: routingISISRead
          description: Query ISIS
        put:
          displayName: routingISISUpdate
          description: Config ISIS
          body:
            application/xml:
              example: |
                <isis>
                  <enabled></enabled>
                  <systemId></systemId>
                  <areaIds>
                    <areaId></areaId>
                  </areaIds>
                  <isType></isType>
                  <domainPassword></domainPassword>
                  <areaPassword></areaPassword>
                  <isisInterfaces>
                    <isisInterface>
                      <vnic></vnic>
                      <meshGroup></meshGroup>
                      <helloInterval></helloInterval>
                      <helloMultiplier></helloMultiplier>
                      <lspInterval></lspInterval>
                      <metric></metric>
                      <priority></priority>
                      <circuitType></circuitType>
                      <password></password>
                    </isisInterface>
                  </isisInterfaces>
                  <redistribution>
                    <enabled></enabled>
                      <rules>
                        <rule>
                          <prefixName></prefixName>
                            <from>
                              <isis></isis>
                              <ospf></ospf>
                              <bgp></bgp>
                              <static></static>
                              <connected></connected>
                            </from>
                            <action></action>
                          </rule>
                      </rules>
                  </redistribution>
                </isis>
              schema: routingISISUpdate
        delete:
          displayName: routingISISDelete
          description: Delete ISIS routing
      /bgp:
        displayName: routingBGP
        description: Manage BGP routes for NSX Edge
        get:
          displayName: routingBGPRead
          description: Query BGP
        put:
          displayName: routingBGPUpdate
          description: Configure BGP
          body:
            application/xml:
              example: |
                <bgp>
                  <enabled></enabled>
                  <localAS></localAS>
                  <bgpNeighbours>
                    <bgpNeighbour>
                      <ipAddress></ipAddress>
                      <remoteAS></remoteAS>
                      <weight></weight>
                      <holdDownTimer></holdDownTimer>
                      <keepAliveTimer></keepAliveTimer>
                      <password></password>
                      <bgpFilters>
                        <bgpFilter>
                          <direction></direction>
                          <action></action>
                          <network></network>
                          <ipPrefixGe></ipPrefixGe>
                          <ipPrefixLe></ipPrefixLe>
                        </bgpFilter>
                      </bgpFilters>
                    </bgpNeighbour>
                  </bgpNeighbours>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </bgp>
              schema: routingBGPUpdate
        delete:
          displayName: routingBGPDelete
          description: Delete BGP Routing
    /bridging/config:
      displayName: bridging
      description: Working with L2 bridging
      get:
        displayName: bridgingRead
        description: Retrieve bridge configuration
      put:
        displayName: bridingUpdate
        description: Configure a bridge
        body:
          application/xml:
            example: |
              <bridges>
                <version></version>
                <enabled></enabled>
                <bridge>
                  <name></name>
                  <virtualWire></virtualWire>
                  <dvportGroup></dvportGroup>
                </bridge>
              </bridges>
            schema: bridingUpdate
      delete:
        displayName: bridgingDelete
        description: Delete bridges
    /loadbalancer/config:
      displayName: loadBalancer
      description: NSX Edge load balancer
      get:
        displayName: loadBalancerRead
        description: Get current load balancer config
      put:
        displayName: loadBalancerConfig
        description: Configure load balancer
        body:
          application/xml:
            example: |
              <loadBalancer>
                <enabled></enabled>
                <enableServiceInsertion></enableServiceInsertion>
                <accelerationEnabled></accelerationEnabled>
                <logging>
                  <enable></enable>
                  <logLevel></logLevel>
                </logging>
                <virtualServer>
                  <virtualServerId></virtualServerId>
                  <name></name>
                  <description></description>
                  <enabled></enabled>
                  <ipAddress></ipAddress>
                  <protocol></protocol>
                  <port></port>
                  <connectionLimit></connectionLimit>
                  <connectionRateLimit></connectionRateLimit>
                  <applicationProfileId></applicationProfileId>
                  <defaultPoolId></defaultPoolId>
                  <enableServiceInsertion></enableServiceInsertion>
                  <accelerationEnabled></accelerationEnabled>
                </virtualServer>
                <applicationProfile>
                  <applicationProfileId></applicationProfileId>
                  <name></name>
                  <insertXForwardedFor></insertXForwardedFor>
                  <sslPassthrough></sslPassthrough>
                  <persistence>
                    <method></method>
                    <cookieName></cookieName>
                    <cookieMode></cookieMode>
                  </persistence>
                </applicationProfile>
                <pool>
                  <poolId></poolId>
                  <name></name>
                  <description></description>
                  <transparent></transparent>
                  <algorithm></algorithm>
                  <monitorId></monitorId>
                  <member>
                    <memberId></memberId>
                    <ipAddress></ipAddress>
                    <weight></weight>
                    <port></port>
                    <minConn></minConn>
                    <maxConn></maxConn>
                    <name></name>
                  </member>
                </pool>
                <monitor>
                  <monitorId></monitorId>
                  <type></type>
                  <interval></interval>
                  <timeout></timeout>
                  <maxRetries></maxRetries>
                  <method></method>
                  <url></url>
                  <name></name>
                </monitor>
              </loadBalancer>
            schema: loadBalancerConfig
      delete:
        displayName: loadBalancerDelete
        description: Delete load balancer configuration
      /applicationprofiles:
        displayName: applicationProfiles
        description: Application profiles define the behavior of a particular type of network traffic
        post:
          displayName: applicationProfilesCreate
          description: Add an application profile
          body:
            application/xml:
              example: |
                <applicationProfile>
                  <name></name>
                  <insertXForwardedFor></insertXForwardedFor>
                  <sslPassthrough></sslPassthrough>
                  <persistence>
                    <method></method>
                    <cookieName></cookieName>
                    <cookieMode></cookieMode>
                  </persistence>
                </applicationProfile>
              schema: applicationProfilesCreate
        get:
          displayName: applicationProfilesRead
          description: Retrieve all application profiles on Edge
        delete:
          displayName: applicationProfilesDelete
          description: Delete all application profiles
        /{appProfileID}:
          displayName: applicationProfile
          description: Modify or retrieve an application profile
          uriParameters:
            appProfileID:
              required: true
              displayName: appProfileID
              description: Specified application profile
          put:
            displayName: applicationProfileUpdate
            description: Modify an application profile
            body:
              application/xml:
                example: |
                  <applicationProfile>
                    <name></name>
                    <insertXForwardedFor></insertXForwardedFor>
                    <sslPassthrough></sslPassthrough>
                    <persistence>
                      <method></method>
                      <cookieName></cookieName>
                      <cookieMode></cookieMode>
                    </persistence>
                  </applicationProfile>
                schema: applicationProfileUpdate
          get:
            displayName: applicationProfileRead
            description: Retrieve an application profile
          delete:
            displayName: applicationProfileDelete
            description: Delete an application profile
      /applicationrules:
        displayName: appRules
        description: Manage application rules that directly manipulate and manage IP app traffic
        post:
          displayName: appRulesCreate
          description: Add an application rule
          body:
            application/xml:
              example: |
                <applicationRule>
                  <name></name>
                  <script></script>
                </applicationRule>
              schema: appRulesCreate
        get:
          displayName: appRulesRead
          description: Read all application rules
        delete:
          displayName: appRulesDelete
          description: Delete all application rules
        /{appruleID}:
          displayName: appRule
          description: Application rule
          uriParameters:
            appruleID:
              required: true
              displayName: appruleID
              description: Specified application rule
          get:
            displayName: appRuleRead
            description: Retrieve an application rule
          put:
            displayName: appRuleUpdate
            description: Modify an app rule
            body:
              application/xml:
                example: |
                  <applicationRule>
                    <name></name>
                    <script></script>
                  </applicationRule>
                schema: appRuleUpdate
          delete:
            displayName: appRuleDelete
            description: Delete an application rule
      /monitors:
        displayName: lbMonitors
        description: Load balancer monitors define health check parameters for a particular type of network traffic
        post:
          displayName: lbMonitorsCreate
          description: Add a load balancer monitor
          body:
            application/xml:
              example: |
                <monitor>
                  <type></type>
                  <interval></interval>
                  <timeout></timeout>
                  <maxRetries></maxRetries>
                  <method></method>
                  <url></url>
                  <name></name>
                </monitor>
              schema: lbMonitorsCreate
        get:
          displayName: lbMonitorsRead
          description: Retrieve all load balancer monitors
        delete:
          displayName: lbMonitorsDelete
          description: Delete all load balancer monitors
        /{monitorID}:
          displayName: lbMonitor
          description: Specific load balancer monitor
          uriParameters:
            monitorID:
              required: true
              displayName: monitorID
              description: Specified monitor
          get:
            displayName: lbMonitorRead
            description: Retrieve a load balancer monitor
          put:
            displayName: lbMonitorUpdate
            description: Modify a load balancer monitor
            body:
              application/xml:
                example: |
                  <monitor>
                    <type></type>
                    <interval></interval>
                    <timeout></timeout>
                    <maxRetries></maxRetries>
                    <method></method>
                    <url></url>
                    <name></name>
                  </monitor>
                schema: lbMonitorUpdate
          delete:
            displayName: lbMonitorDelete
            description: Delete a load balancer monitor
      /virtualservers:
        displayName: virtualServers
        description: You can add an NSX Edge internal or uplink interface as a virtual server
        post:
          displayName: virtualServersCreate
          description: Add a virtual server
          body:
            application/xml:
              example: |
                <virtualServer>
                  <name></name>
                  <description></description>
                  <enabled></enabled>
                  <ipAddress></ipAddress>
                  <protocol></protocol>
                  <port></port>
                  <connectionLimit></connectionLimit>
                  <connectionRateLimit></connectionRateLimit>
                  <applicationProfileId></applicationProfileId>
                  <defaultPoolId></defaultPoolId>
                  <enableServiceInsertion></enableServiceInsertion>
                  <accelerationEnabled></accelerationEnabled>
                </virtualServer>
              schema: virtualServersCreate
        get:
          displayName: virtualServersRead
          description: Retrieve all virtual servers
        delete:
          displayName: virtualServersDelete
          description: Delete all
        /{virtualserverID}:
          displayName: virtualServer
          description: Specified virtual server
          uriParameters:
            virtualserverID:
              required: true
              displayName: virtualserverID
              description: Specified virtual server ID
          get:
            displayName: virtualServerRead
            description: Retrieve virtual server details
          delete:
            displayName: virtualServerDelete
            description: Delete a virtual server
      /pools:
        displayName: pools
        description: Server pools manage load balancer distribution methods and has a monitor attached to it for health check parameters
        post:
          displayName: poolsCreate
          description: Add a load balancer server pool to the Edge
          body:
            application/xml:
              example: |
                <pool>
                  <name></name>
                  <description></description>
                  <transparent></transparent>
                  <algorithm></algorithm>
                  <monitorId></monitorId>
                  <member>
                    <ipAddress></ipAddress>
                    <weight></weight>
                    <port></port>
                    <minConn></minConn>
                    <maxConn></maxConn>
                    <name></name>
                    <monitorPort></monitorPort>
                  </member>
                </pool>
              schema: poolsCreate
        get:
          displayName: poolsRead
          description: Get all backend pools for the specified NSX Edge
        delete:
          displayName: poolsDelete
          description: Delete all backend pools configured on the specified NSX Edge
        /{poolID}:
          displayName: pool
          description: Specific backend pool
          uriParameters:
            poolID:
              required: true
              displayName: poolID
              description: Specified pool ID
          get:
            displayName: poolRead
            description: Get backend pool details
          put:
            displayName: poolUpdate
            description: Modify the specified pool
            body:
              application/xml:
                example: |
                  <pool>
                    <name></name>
                    <description></description>
                    <transparent></transparent>
                    <algorithm></algorithm>
                    <monitorId></monitorId>
                    <member>
                      <ipAddress></ipAddress>
                      <weight></weight>
                      <port></port>
                      <minConn></minConn>
                      <maxConn></maxConn>
                      <name></name>
                      <monitorPort></monitorPort>
                    </member>
                  </pool>
                schema: poolUpdate
          delete:
            displayName: poolDelete
            description: Delete backend pool
      /members/{memberID}:
        displayName: lbMemberCond
        description: Load balancer member condition
        uriParameters:
          memberID:
            required: true
            displayName: memberID
            description: Member ID
        post:
          displayName: lbMemberCond
          description: Update member condition
          queryParameters:
            enable:
              required: true
              displayName: enable
              type: boolean
              description: Enable or disable member condition
    /loadbalancer/statistics:
      displayName: lbStatistics
      description: Load balancer statistics
      get:
        displayName: lbStatisticsRead
        description: Retrieve load balancer statistics
    /loadbalancer/acceleration:
      displayName: lbAcceleration
      description: Update acceleration mode
      post:
        queryParameters:
          enable:
            required: true
            displayName: enable
            description: Enable or disable load balancer acceleration mode
            type: boolean
    /dns/config:
      displayName: edgeDns
      description: Configure DNS servers to which vShield Edge can relay name resolution requests
      get:
        displayName: edgeDnsRead
        description: Retrieve DNS configuration
      put:
        displayName: edgeDnsUpdate
        description: Configure DNS servers
        body:
          application/xml:
            example: |
              <dns>
                <enabled></enabled>
                <dnsServers>
                  <ipAddress></ipAddress>
                </dnsServers>
                <cacheSize></cacheSize>
                <listeners>
                  <ipAddress></ipAddress>
                </listeners>
                <logging>
                  <logLevel></logLevel>
                  <enable></enable>
                </logging>
              </dns>
            schema: edgeDnsUpdate
      delete:
        displayName: edgeDnsDelete
        description: Delete DNS configuration
    /dns/statistics:
      displayName: edgeDnsStats
      description: Get DNS server statistics
      get:
        displayName: edgeDnsStats
        description: Get DNS server statistics
    /dhcp/config:
      displayName: dhcp
      description: Configure DHCP for NSX Edge
      get:
        displayName: dhcpRead
        description: Get DHCP configuration
      put:
        displayName: dhcpUpdate
        description: Configure DHCP service
        body:
          application/xml:
            example: |
              <dhcp>
                <enabled></enabled>
                <staticBindings>
                  <staticBinding>
                    <macAddress></macAddress>
                    <vmId></vmId>
                    <vnicId></vnicId>
                    <hostname></hostname>
                    <ipAddress></ipAddress>
                    <subnetMask></subnetMask>
                    <defaultGateway></defaultGateway>
                    <domainName></domainName>
                    <primaryNameServer></primaryNameServer>
                    <secondaryNameServer></secondaryNameServer>
                    <leaseTime></leaseTime>
                    <autoConfigDNS></autoConfigDNS>
                  </staticBinding>
                </staticBindings>
                <ipPools>
                  <ipPool>
                    <ipRange></ipRange>
                    <defaultGateway></defaultGateway>
                    <subnetMask></subnetMask>
                    <domainName></domainName>
                    <primaryNameServer></primaryNameServer>
                    <secondaryNameServer></secondaryNameServer>
                    <leaseTime></leaseTime>
                    <autoConfigDNS></autoConfigDNS>
                  </ipPool>
                </ipPools>
                <logging>
                  <enable></enable>
                  <logLevel></logLevel>
                </logging>
              </dhcp>
            schema: dhcpUpdate
      delete:
        displayName: dhcpDelete
        description: Delete the DHCP configuration, restoring it to factory default
      /ippools:
        displayName: dhcpPool
        description: Adding IP pools to DHCP configuration
        post:
          displayName: dhcpPoolCreate
          description: Add an IP pool to the DHCP configuration. returns a pool ID within a Location HTTP header
          body:
            application/xml:
              example: |
                <ipPool>
                  <ipRange></ipRange>
                  <defaultGateway></defaultGateway>
                  <domainName></domainName>
                  <primaryNameServer></primaryNameServer>
                  <secondaryNameServer></secondaryNameServer>
                  <leaseTime></leaseTime>
                  <autoConfigureDNS></autoConfigureDNS>
                </ipPool>
              schema: dhcpPoolCreate
        /{poolID}:
          displayName: dhcpPoolID
          description: Specific DHCP pool
          uriParameters:
            poolID:
              required: true
              displayName: poolID
              description: Specified DHCP IP pool
          delete:
            displayName: dhcpPoolIDDelete
            description: Delete a pool specified by pool ID
      /bindings:
        displayName: dhcpStaticBinding
        description: Adding static-binding to DHCP configuration.
        post:
          displayName: dhcpStaticBindingCreate
          description: Append a static-binding to DHCP config. A static-binding ID is returned within a Location HTTP header
          body:
            application/xml:
              example: |
                <staticBinding>
                  <vmId></vmId>
                  <vnicId></vnicId>
                  <hostname></hostname>
                  <ipAddress></ipAddress>
                  <defaultGateway></defaultGateway>
                  <domainName></domainName>
                  <primaryNameServer></primaryNameServer>
                  <secondaryNameServer></secondaryNameServer>
                  <leaseTime></leaseTime>
                  <autoConfigureDNS></autoConfigureDNS>
                </staticBinding>
              schema: dhcpStaticBindingCreate
        /{bindingID}:
          displayName: dhcpStaticBindingID
          description: Specific DHCP static binding
          uriParameters:
            bindingID:
              required: true
              displayName: bindingID
              description: Specified static-binding ID
          delete:
            displayName: dhcpStaticBindingIDDelete
            description: Delete the static-binding by ID
      /relay:
        displayName: dhcpRelay
        description: Configure DHCP relay
        get:
          displayName: dhcpRelayRead
          description: Query DHCP relay
        put:
          displayName: dhcpRelayUpdate
          description: Configure DHCP relay
          body:
            application/xml:
              example: |
                <relay>
                  <relayServer>
                    <groupingObjectId></groupingObjectId>
                    <groupingObjectId></groupingObjectId>
                    <ipAddress></ipAddress>
                    <fqdn></fqdn>
                  </relayServer>
                  <relayAgents>
                    <relayAgent>
                      <vnicIndex></vnicIndex>
                      <giAddress></giAddress>
                    </relayAgent>
                  </relayAgents>
                </relay>
              schema: dhcpRelayUpdate
        delete:
          displayName: dhcpRelayDelete
          description: Delete DHCP relay configuration
    /dhcp/leaseInfo:
      displayName: dhcpLease
      description: DHCP Lease information
      get:
        displayName: dhcpLeaseRead
        description: Get DHCP lease information
    /highavailability/config:
      displayName: highAvailability
      description: Ensures that an Edge appliance is always available on your virtualized network.
      get:
        displayName: highAvailabilityRead
        description: Get high availability configuration
      put:
        displayName: highAvailabilityCreate
        description: Configure high availability
        body:
          application/xml:
            example: |
              <highAvailability>
                <vnic></vnic>
                <ipAddresses>
                  <ipAddress></ipAddress>
                </ipAddresses>
                <declareDeadTime></declareDeadTime>
                <enabled></enabled>
              </highAvailability>
            schema: highAvailabilityCreate
      delete:
        displayName: highAvailabilityDelete
        description: Delete high availability configuration
    /syslog/config:
      displayName: syslog
      description: Configure one or two remote syslog servers. Edge events and logs related to firewall events that flow from Edge appliances are sent to the syslog servers
      get:
        displayName: syslogRead
        description: Query syslog servers
      put:
        displayName: syslogUpdate
        description: Configure syslog servers
        body:
          application/xml:
            example: |
              <syslog>
                <protocol></protocol>
                <serverAddresses>
                  <ipAddress></ipAddress>
                </serverAddresses>
              </syslog>
            schema: syslogUpdate
      delete:
        displayName: syslogDelete
        description: Delete syslog servers
    /sslvpn/config:
      displayName: sslVPN
      description: Manage SSL VPN
      post:
        displayName: sslVPNCreate
        description: Enable or disable SSL VPN
        queryParameters:
          enableService:
            displayName: enableService
            required: true
            description: Set to true to enable, false to disable
            type: boolean
      get:
        displayName: sslVPNRead
        description: Retrieve SSL VPN details
      put:
        displayName: sslVPNUpdate
        description: Reconfigure the entire SSL VPN
        body:
          application/xml:
            example: |
              <logonLogoffScript>
                <logonLogoffScript>
                  <objectId></objectId>
                  <scriptFileId></scriptFileId>
                  <type></type>
                  <enabled></enabled>
                  <description></description>
                </logonLogoffScript>
              </logonLogoffScript>
            schema: sslVPNUpdate
      delete:
        displayName: sslVPNDelete
        description: Delete the SSL VPN configurations on the Edge
      /server:
        displayName: serverSettings
        description: Configure SSL VPN server on port 443 using the certificate named server-cert that is already uploaded on the NSX Edge appliance and the specified cipher
        get:
          displayName: serverSettingsRead
          description: Get server settings
        put:
          displayName: serverSettingsUpdate
          description: Apply server settings
          body:
            application/xml:
              example: |
                <serverSettings>
                  <serverAddresses>
                    <ipAddress></ipAddress>
                  </serverAddresses>
                  <port></port>
                  <certificateId></certificateId>
                  <sslVersionList>
                    <version></version>
                  </sslVersionList>
                </serverSettings>
              schema: serverSettingsUpdate
      /client/networkextension/privatenetworks:
        displayName: privateNetworks
        description: Configure a private network to expose to remote users over SSL VPN tunnel
        post:
          displayName: privateNetworksCreate
          description: Add a private network
          body:
            application/xml:
              example: |
                <privateNetwork>
                  <description></description>
                  <network></network>
                  <sendOverTunnel>
                    <ports></ports>
                    <optimize></optimize>
                  </sendOverTunnel>
                  <enabled></enabled>
                </privateNetwork>
              schema: privateNetworksCreate
        get:
          displayName: privateNetworksRead
          description: Get all private network profiles in the SSL VPN instance
        put:
          displayName: privateNetworksUpdate
          description: Update all private network configs of NSX Edge with the given list of private network configs. If the config is present, it is updated; otherwise, a new private network config is created. Existing configs not included in the call body are deleted
        delete:
          displayName: privateNetworksDelete
          description: Delete all Private Networks from the SSL VPN instance
        /{networkID}:
          displayName: privateNetwork
          description: Specific private network
          uriParameters:
            networkID:
              required: true
              displayName: networkID
              description: Specified private network
          get:
            displayName: privateNetworkRead
            description: Get the specified private network in the SSL VPN service
          put:
            displayName: privateNetworkUpdate
            description: Modify specified private network in the SSL VPN service
            body:
              application/xml:
                example: |
                  <privateNetwork>
                    <description></description>
                    <network></network>
                    <sendOverTunnel>
                      <ports></ports>
                      <optimize></optimize>
                    </sendOverTunnel>
                    <enabled></enabled>
                  </privateNetwork>
                schema: privateNetworkUpdate
          delete:
            displayName: privateNetworkDelete
            description: Delete private network
      /client/networkextension/ippools:
        displayName: netExtIpPools
        description: IP pools to assign IP addresses to remote users
        post:
          displayName: netExtipPoolsCreate
          description: Create an IP pool
          body:
            application/xml:
              example: |
                <ipAddressPool>
                  <description></description>
                  <ipRange></ipRange>
                  <netmask></netmask>
                  <gateway></gateway>
                  <primaryDns></primaryDns>
                  <secondaryDns></secondaryDns>
                  <dnsSuffix></dnsSuffix>
                  <winsServer></winsServer>
                  <enabled></enabled>
                </ipAddressPool>
              schema: netExtipPoolsCreate
        get:
          displayName: netExtipPoolsRead
          description: Get all IP pools configured on SSL VPN
        put:
          displayName: netExtipPoolsUpdate
          description: Update all IP pools with the given list of pools. If the pool is present, it is updated; otherwise, a new pool is created. Existing pools not in the body are deleted
          body:
            application/xml:
              example: |
                <ipAddressPool>
                  <description></description>
                  <ipRange></ipRange>
                  <netmask></netmask>
                  <gateway></gateway>
                  <primaryDns></primaryDns>
                  <secondaryDns></secondaryDns>
                  <dnsSuffix></dnsSuffix>
                  <winsServer></winsServer>
                  <enabled></enabled>
                </ipAddressPool>
              schema: netExtipPoolsUpdate
        delete:
          displayName: netExtipPoolsDelete
          description: Delete all IP pools configured on SSL VPN
        /{ippoolID}:
          displayName: netExtipPool
          description: Specified IP pool
          uriParameters:
            ippoolID:
              required: true
              displayName: ipPoolID
              description: Specified IP pool ID
          get:
            displayName: netExtipPoolRead
            description: Get details of specified IP pool
          put:
            displayName: netExtipPoolUpdate
            description: Modify specified IP pool
          delete:
            displayName: netExtipPoolDelete
            description: Delete the specified IP pool
      /client/networkextension/clientconfig:
        displayName: clientConfig
        description: Advanced parameters for full access client configurations--such as whether client should auto-reconnect in case of network failures or network unavailability, or whether the client should be uninstalled after logout
        put:
          displayName: clientConfigUpdate
          description: Set parameters for full access client configurations
          body:
            application/xml:
              example: |
                <clientConfiguration>
                  <autoReconnect></autoReconnect>
                  <fullTunnel>
                    <excludeLocalSubnets></excludeLocalSubnets>
                    <gatewayIp></gatewayIp>
                  </fullTunnel>
                  <upgradeNotification></upgradeNotification>
                </clientConfiguration>
              schema: clientConfigUpdate
        get:
          displayName: clientConfigRead
          description: Get client configuration
      /client/networkextension/installpackages:
        displayName: installPackages
        description: Installation packages for SSL VPN clients
        post:
          displayName: installPackagesCreate
          description: Create installers for full access network clients. These setup binaries are downloaded by remote clients and installed on their systems.
          body:
            application/xml:
              example: |
                <clientInstallPackage>
                  <profileName></profileName>
                  <gatewayList>
                    <gateway>
                      <hostName></hostName>
                      <port></port>
                    </gateway>
                  </gatewayList>
                  <startClientOnLogon></startClientOnLogon>
                  <hideSystrayIcon></hideSystrayIcon>
                  <rememberPassword></rememberPassword>
                  <silentModeOperation></silentModeOperation>
                  <silentModeInstallation></silentModeInstallation>
                  <hideNetworkAdaptor></hideNetworkAdaptor>
                  <createDesktopIcon></createDesktopIcon>
                  <enforceServerSecurityCertValidation></enforceServerSecurityCertValidation>
                  <createLinuxClient></createLinuxClient>
                  <createMacClient></createMacClient>
                  <description></description>
                  <enabled></enabled>
                </clientInstallPackage>
              schema: installPackagesCreate
        get:
          displayName: installPackagesRead
          description: Get information about all installation packages
        put:
          displayName: installPackagesUpdate
          description: Update all installation packages with the given list. If the package is present, it is updated; otherwise a new installation package is created. Existing packages not included in the body are deleted.
        delete:
          displayName: installPackagesDelete
          description: Delete all client installation packages
        /{packageID}:
          displayName: installPackage
          description: Specified installation package
          uriParameters:
            packageID:
              required: true
              displayName: packageID
              description: Specified installation package ID
          get:
            displayName: installPackageRead
            description: Get information about the specified installation package
          put:
            displayName: installPackageUpdate
            description: Modify the specified installation package
            body:
              application/xml:
                example: |
                  <clientInstallPackage>
                    <profileName></profileName>
                    <gatewayList>
                      <gateway>
                        <hostName></hostName>
                        <port></port>
                      </gateway>
                    </gatewayList>
                    <startClientOnLogon></startClientOnLogon>
                    <hideSystrayIcon></hideSystrayIcon>
                    <rememberPassword></rememberPassword>
                    <silentModeOperation></silentModeOperation>
                    <silentModeInstallation></silentModeInstallation>
                    <hideNetworkAdaptor></hideNetworkAdaptor>
                    <createDesktopIcon></createDesktopIcon>
                    <enforceServerSecurityCertValidation></enforceServerSecurityCertValidation>
                    <createLinuxClient></createLinuxClient>
                    <createMacClient></createMacClient>
                    <description></description>
                    <enabled></enabled>
                  </clientInstallPackage>
                schema: installPackageUpdate
          delete:
            displayName: installPackageDelete
            description: Delete the specified installation package
      /layout:
        displayName: layout
        description: Layout configuration
        get:
          displayName: layoutRead
          description: Query layout configuration
        /images:
          put:
            displayName: layoutUpdate
            description: Set the portal layout
            body:
              application/xml:
                example: |
                  <layout>
                    <portalTitle></portalTitle>
                    <companyName></companyName>
                    <logoBackgroundColor></logoBackgroundColor>
                    <titleColor></titleColor>
                    <topFrameColor></topFrameColor>
                    <menuBarColor></menuBarColor>
                    <rowAlternativeColor></rowAlternativeColor>
                    <bodyColor></bodyColor>
                    <rowColor></rowColor>
                  </layout>
                schema: layoutUpdate
      /webresources:
        displayName: webResources
        description: Web access server that a remote user can connect to via a web browser
        post:
          displayName: webResourcesCreate
          description: Add portal web resource
          body:
            application/xml:
              example: |
                <webResource>
                  <name></name>
                  <url></url>
                  <method name="">
                    <data></data>
                  </method>
                  <description></description>
                  <enabled></enabled>
                </webResource>
              schema: webResourcesCreate
        get:
          displayName: webResourcesRead
          description: Get all web resources on the SSL VPN instance
        delete:
          displayName: webResourcesDelete
          description: Delete all web resources on the SSL VPN instance
        /{id}:
          displayName: webResource
          description: Specified web access server
          uriParameters:
            id:
              displayName: id
              description: ID of specified web access server
              required: true
          get:
            displayName: webResourceRead
            description: Get the specified web access server
          put:
            displayName: webResourceUpdate
            description: Modify the specified web access server
          delete:
            displayName: webResourceDelete
            description: Delete the specified web access server
      /auth/localserver/users:
        displayName: sslVPNUsers
        description: Portal users
        post:
          displayName: usersCreate
          description: Add a new portal user
          body:
            application/xml:
              example: |
                <user>
                  <userId></userId>
                  <password></password>
                  <firstName></firstName>
                  <lastName></lastName>
                  <description></description>
                  <disableUserAccount></disableUserAccount>
                  <passwordNeverExpires></passwordNeverExpires>
                  <allowChangePassword>
                    <changePasswordOnNextLogin></changePasswordOnNextLogin>
                  </allowChangePassword>
                </user>
              schema: usersCreate
        put:
          displayName: usersUpdate
          description: Modify the specified portal user
          body:
            application/xml:
              example: |
                <user>
                  <userId></userId>
                  <password></password>
                  <firstName></firstName>
                  <lastName></lastName>
                  <description></description>
                  <disableUserAccount></disableUserAccount>
                  <passwordNeverExpires></passwordNeverExpires>
                  <allowChangePassword>
                    <changePasswordOnNextLogin></changePasswordOnNextLogin>
                  </allowChangePassword>
                </user>
              schema: usersUpdate
        delete:
          displayName: usersDelete
          description: Delete all users on the specifed SSL VPN instance
        /{userID}:
          displayName: user
          description: Specified user
          get:
            displayName: userRead
            description: Get information about a specified user
          delete:
            displayName: userDelete
            description: Delete specified user
      /auth/settings:
        displayName: authSettings
        description: Authentication settings
        get:
          displayName: authSettingsRead
          description: Get information about authentication server
        put:
          displayName: authSettingsUpdate
          description: Set authentication process for remote users. Specify username/password authentication, active directory, ldap, radius, client certificate based authentication
          body:
            application/xml:
              example: |
                <authenticationConfig>
                  <passwordAuthentication>
                  <authenticationTimeout></authenticationTimeout>
                    <primaryAuthServers>
                      <com.vmware.vshield.edge.sslvpn.dto.LdapAuthServerDto>
                        <ip></ip>
                        <port></port>
                        <timeOut></timeOut>
                        <enableSsl></enableSsl>
                        <searchBase></searchBase>
                        <bindDomainName></bindDomainName>
                        <bindPassword></bindPassword>
                        <loginAttributeName></loginAttributeName>
                        <searchFilter></searchFilter>
                        <enabled></enabled>
                      </com.vmware.vshield.edge.sslvpn.dto.LdapAuthServerDto>
                      <com.vmware.vshield.edge.sslvpn.dto.RadiusAuthServerDto>
                        <ip></ip>
                        <port></port>
                        <timeOut></timeOut>
                        <secret></secret>
                        <nasIp></nasIp>
                        <retryCount></retryCount>
                      </com.vmware.vshield.edge.sslvpn.dto.RadiusAuthServerDto>
                      <com.vmware.vshield.edge.sslvpn.dto.LocalAuthServerDto>
                        <enabled></enabled>
                        <passwordPolicy>
                          <minLength></minLength>
                          <maxLength></maxLength>
                          <minAlphabets></minAlphabets>
                          <minDigits></minDigits>
                          <minSpecialChar></minSpecialChar>
                          <allowUserIdWithinPassword></allowUserIdWithinPassword>
                          <passwordLifeTime></passwordLifeTime>
                          <expiryNotification></expiryNotification>
                        </passwordPolicy>
                        <accountLockoutPolicy>
                          <retryCount></retryCount>
                          <retryDuration></retryDuration>
                          <lockoutDuration></lockoutDuration>
                        </accountLockoutPolicy>
                      </com.vmware.vshield.edge.sslvpn.dto.LocalAuthServerDto>
                      <com.vmware.vshield.edge.sslvpn.dto.RsaAuthServerDto>
                        <timeOut></timeOut>
                        <sourceIp></sourceIp>
                      </com.vmware.vshield.edge.sslvpn.dto.RsaAuthServerDto>
                    </primaryAuthServers>
                    <secondaryAuthServer>
                      <com.vmware.vshield.edge.sslvpn.dto.AdAuthServerDto>
                        <ip>1.1.1.1</ip>
                        <port>90</port>
                        <timeOut>20</timeOut>
                        <enableSsl>false</enableSsl>
                        <searchBase>searchbasevalue</searchBase>
                        <bindDomainName>binddnvalue</bindDomainName>
                        <bindPassword>password</bindPassword>
                        <loginAttributeName>cain</loginAttributeName>
                        <searchFilter>found</searchFilter>
                        <terminateSessionOnAuthFails>false</terminateSessionOnAuthFails>
                        <enabled>true</enabled>
                      </com.vmware.vshield.edge.sslvpn.dto.AdAuthServerDto>
                    </secondaryAuthServer>
                  </passwordAuthentication>
                </authenticationConfig>
              schema: authSettingsUpdate
        /rsaconfigfile:
          displayName: rsaConfig
          description: RSA authentication server, bound to the SSL gateway
          post:
            displayName: rsaConfigCreate
            description: Upload RSA config file (See "Generate the Authentication Manager Configuration File" section of the RSA Authentication Manager Administrator's guide for instructions on how to configure and download the RSA config file from RSA Authentication Manager)
      /advancedconfig:
        displayName: advancedConfig
        description: SSL VPN advanced configuration
        get:
          displayName: advancedConfigRead
          description: Retrieve SSL VPN advanced configuration
        put:
          displayName: advancedConfigUpdate
          description: Apply advanced configuration
          body:
            application/xml:
              example: |
                <advancedConfig>
                  <enableCompression></enableCompression>
                  <forceVirtualKeyboard></forceVirtualKeyboard>
                  <preventMultipleLogon></preventMultipleLogon>
                  <randomizeVirtualkeys></randomizeVirtualkeys>
                  <timeout>
                    <forcedTimeout></forcedTimeout>
                    <sessionIdleTimeout></sessionIdleTimeout>
                  </timeout>
                  <clientNotification></clientNotification>
                  <enablePublicUrlAccess></enablePublicUrlAccess>
                  <enableLogging></enableLogging>
                </advancedConfig>
              schema: advancedConfigUpdate
      /script:
        displayName: script
        description: Logon and logoff scripts for NSX Edge gateway
        post:
          displayName: scriptCreate
          description: Configure parameters associated with the uploaded script file
          body:
            application/xml:
              example: |
                <logonLogoffScript>
                  <scriptFileId></scriptFileId>
                  <type></type>
                  <description></description>
                  <enabled></enabled>
                </logonLogoffScript>
              schema: scriptCreate
        get:
          displayName: scriptRead
          description: Retrieve all script configurations for the Edge
        put:
          displayName: scriptUpdate
          description: Update all script configurations with the given list of configurations. If the config is present, its is updated; otherwise, a new config is created. Existing configs not included in the body are deleted
          body:
            application/xml:
              example: |
                <logonLogoffScript>
                  <scriptFileId></scriptFileId>
                  <type></type>
                  <description></description>
                  <enabled></enabled>
                </logonLogoffScript>
              schema: scriptUpdate
        delete:
          displayName: scriptDelete
          description: Delete all script configurations
        /{fileID}:
          displayName: scriptFileID
          description: Specified uploaded script file
          uriParameters:
            fileID:
              required: true
              displayName: fileID
              description: Specified script file
          get:
            displayName: scriptFileIDRead
            description: Retrieve parameters associated with the specified script file
          put:
            displayName: scriptFileIDUpdate
            description: Modify script parameters
            body:
              application/xml:
                example: |
                  <logonLogoffScript>
                    <scriptFileId></scriptFileId>
                    <type></type>
                    <description></description>
                    <enabled></enabled>
                  </logonLogoffScript>
                schema: scriptFileIDUpdate
          delete:
            displayName: scriptFileIDDelete
            description: Delete script parameters
        /file: # PDF pg 238
          displayName: scriptFile
          description: Logon and logoff scripts for NSX Edge gateway
          post:
            displayName: scriptFileCreate
            description: Upload a login/logoff script. Returns a script file ID to configure the parameters
    /sslvpn/auth/localusers/users:
      displayName: allUsers
      description: All users of NSX Edge
      put:
        displayName: allUsersUpdate
        description: Update all users with the given list of users. If the user is present, it is updated. Otherwise, and new user is created. Existing users not included in the body are deleted.
        body:
          application/xml:
            example: |
              <users>
                <user>
                  <userId></userId>
                  <password></password>
                  <firstName></firstName>
                  <lastName></lastName>
                  <description></description>
                  <disableUserAccount></disableUserAccount>
                  <passwordNeverExpires></passwordNeverExpires>
                  <allowChangePassword>
                    <changePasswordOnNextLogin></changePasswordOnNextLogin>
                  </allowChangePassword>
                </user>
              </users>
            schema: allUsersUpdate
    /sslvpn/activesessions:
      displayName: sslVPNActiveClients
      description: Working with active clients
      get:
        displayName: sslVPNActiveClientsRead
        description: Retrieve a list of active clients for the SSL VPN session
      /{sessionID}:
        displayName: session
        description: Specified client session
        uriParameters:
          sessionID:
            required: true
            displayName: sessionID
            description: Specified client session
        delete:
          displayName: sessionDelete
          description: Disconnect an active client
    /statistics/dashboard/sslvpn:
      displayName: sslVPNStats
      description: SSL VPN statistics on the specified NSX Edge
      get:
        displayName: sslVPNStatsRead
        description: Retrieve SSL VPN statistics on the specified NSX Edge
        queryParameters:
          interval:
            displayName: interval
            description: Specify a range; can be 1 - 60 minutes, or oneDay|oneWeek|oneMonth|oneYear. Default is 60 minutes
    /statistics/dashboard/ipsec:
      displayName: ipsecTrafficStats
      description: Tunnel traffic statistics
      get:
        displayName: ipsecTrafficStatsRead
        description: Retrieve tunnel traffic statistics for specified time interval. Default is 1 hour. Other possible values are 1-60 minutes|oneDay|oneWeek|oneMonth|oneYear
    /statistics/dashboard/interface:
      displayName: vnicDashStats
      description: Dashboard statistics
      get:
        displayName: vnicDashStatsRead
        description: Retrieve dashboard statistics between the specified start and end times.
        queryParameters:
          interval:
            required: true
            displayName: interval
            description: Specify a start and end time range in seconds
    /statistics/interfaces:
      displayName: vnicStats
      description: Interface statistics
      get:
        displayName: vnicStatsRead
        description: Get interface statistics
      /uplink:
        displayName: uplinkVNICStats
        description: Uplink interface statistics
        get:
          displayName: uplinkVNICStatsRead
          description: Get uplink interface statistics
      /internal:
        displayName: internalVNICStats
        description: Internal interface statistics
        get:
          displayName: internalVNICStatsRead
          description: Get internal interface statistics
    /l2vpn/config:
      displayName: l2VPN
      description: L2 VPN allows you to configure a tunnel between two sites. VM's remain on the same subnet in spite of being moved between these sites, enabling you to extend your datacenter. An NSX Edge at one site can provide all services to VM's on the other site.
      post:
        displayName: l2VPNCreate
        description: Enable or disable L2 VPN service according to the value of the query parameter "enableService"
        queryParameters:
          enableService:
            required: true
            displayName: enableService
            description: Enable or disable L2 VPN
            type: boolean
      get:
        displayName: l2VPNRead
        description: Retrieve the current L2VPN configuration for NSX Edge
      put:
        displayName: l2VPNUpdate
        description: Configure L2VPN for server or client
        body:
          application/xml:
      delete:
        displayName: l2VPNDelete
        description: Delete L2 VPN
      /statistics:
        displayName: statistics
        description: L2 VPN statistics
        get:
          displayName: statisticsRead
          description: Retrieve L2 VPN stats, which has information such as tunnel status, sent bytes, received bytes etc. for the given Edge
    /ipsec/config:
      displayName: ipsecConfig
      description: Working with IPSEC VPN
      get:
        displayName: ipsecConfigRead
        description: Retrieve IPSec configuration
      put:
        displayName: ipsecConfigUpdate
        description: Configure IPSEC VPN
        body:
          application/xml:
      delete:
        displayName: ipsecConfigDelete
        description: Delete the IPSec configuration
    /ipsec/statistics:
      displayName: ipsecStats
      description: IPSec statistics
      get:
        displayName: ipsecStatsRead
        description: Retrieve IPSec statistics
    /autoconfiguration:
      displayName: autoConfig
      description: Auto config is enabled by default. If you disable, you must add required NAT, firewall, routing rules
      get:
        displayName: autoConfigRead
        description: Retrieve auto config settings for the Edge
      put:
        displayName: autoConfigUpdate
        description: Change the auto configuration settings for the NSX Edge
        body:
          application/xml:
            example: |
              <autoConfiguration>
                <enabled></enabled>
                <rulePriority></rulePriority>
              </autoConfiguration>
            schema: autoConfigUpdate
    /appliances:
      displayName: appliances
      description: Working with Edge appliances
      post:
        displayName: appliancesCreate
        description: Change the size of both appliances
        queryParameters:
          size:
            required: true
            displayName: size
            description: set to compact|large|xlarge
      get:
        displayName: appliancesRead
        description: Retrieve appliance configuration
      put:
        displayName: appliancesUpdate
        description: Modify appliance configuration (tip -- retrieve the config using GET call, then modify the parameters and send as body)
      /{haIndex}:
        displayName: appliance
        description: Manage a specified appliance using its HA index
        uriParameters:
          haIndex:
            required: true
            displayName: haIndex
            description: Specified appliance HA index
        get:
          displayName: applianceRead
          description: Get configuration of specified appliance
        put:
          displayName: applianceUpdate
          description: Modify the configuration of the specified appliance
          body:
            application/xml:
              example: |
                <appliance>
                  <resourcePoolId></resourcePoolId>
                  <datastoreId></datastoreId>
                  <hostId></hostId>
                  <vmFolderId></vmFolderId>
                  <customField>
                    <key></key>
                    <value></value>
                  </customField>
                  <cpuReservation>
                    <limit></limit>
                    <reservation></reservation>
                    <shares></shares>
                  </cpuReservation>
                  <memoryReservation>
                    <limit></limit>
                    <reservation></reservation>
                    <shares></shares>
                  </memoryReservation>
                </appliance>
              schema: applianceUpdate
        delete:
          displayName: applianceDelete
          description: Delete the appliance
    /vnics:
      displayName: vnics
      description: Working with interfaces. Add up to ten internal/uplink interfaces to each Edge. Each Edge must have at least one internal interface
      post:
        displayName: vnicsCreate
        description: Add an interface or sub interface
        queryParameters:
          action:
            required: true
            displayName: action
            description: always set to "patch"
        body:
          application/xml:
      get:
        displayName: vnicsRead
        description: Retrieve all interfaces for Edge
      /{index}:
        displayName: vnic
        description: Specified interface by index
        uriParameters:
          index:
            required: true
            displayName: index
            description: Specified interface
        get:
          displayName: vnicRead
          description: Retrieve interface
        put:
          displayName: vnicUpdate
          description: Modify the specified interface
          body:
            application/xml:
        delete:
          displayName: vnicDelete
          description: Delete interface
    /mgmtinterface:
      displayName: mgmtInterface
      description: Working with management interfaces for an NSX Edge router
      get:
        displayName: mgmtInterfaceRead
        description: Retrieve all managedment interfaces to the NSX Edge router
      put:
        displayName: mgmtInterfaceUpdate
        description: Configure management interfaces for NSX Edge router
        body:
          application/xml:
            example: |
              <mgmtInterface>
                <addressGroups>
                  <addressGroup>
                    <primaryAddress></primaryAddress>
                    <subnetMask></subnetMask>
                  </addressGroup>
                </addressGroups>
                <mtu></mtu>
                <connectedToId></connectedToId>
              </mgmtInterface>
            schema: mgmtInterfaceUpdate
    /interfaces:
      displayName: interfaces
      description: Working with all NSX Edge router interfaces
      post:
        displayName: interfacesCreate
        description: Add interfaces for NSX Edge router. Can have up to 8 uplink interfaces
        queryParameters:
          action:
            displayName: action
            required: true
            description: Always set to 'patch'
        body:
          application/xml:
            example: |
              <interfaces>
                <interface>
                  <name></name>
                  <addressGroups>
                    <addressGroup>
                      <primaryAddress></primaryAddress>
                      <subnetMask></subnetMask>
                    </addressGroup>
                  </addressGroups>
                  <mtu></mtu>
                  <type></type>
                  <isConnected></isConnected>
                  <connectedToId></connectedToId>
                </interface>
              </interfaces>
            schema: interfacesCreate
      get:
        displayName: interfacesRead
        description: Retrieve all interfaces for Edge router
      delete:
        displayName: interfacesDelete
        description: Delete interfaces
        queryParameters:
          index:
            displayName: index
            description: Specify index of interface to delete (e.g. ?index=<index1>&index=<index2>). If no indices specified, all interfaces are deleted
      /{index}:
        displayName: interface
        description: Manage a specific NSX Edge router interface
        uriParameters:
          index:
            required: true
            displayName: index
            description: Specified router interface
        get:
          displayName: interfaceRead
          description: Retrieve information on specified Edge router interface
        delete:
          displayName: interfaceDelete
          description: Delete interface configuration and reset to factory default
  /jobs:
    displayName: nsxEdgeJobs
    description: NSX Edge async jobs
    get:
      displayName: nsxEdgeJobsRead
      description: Query jobs. Assumes Edge is configured in async mode, where ?async=true is used at the end of any 4.0 service configuration URI for POST, PUT, and DELETE calls.
      queryParameters:
        status:
          displayName: status
          description: status set to "all" or "active"
    /{jobId}:
      displayName: nsxEdgeJob
      description: Status of Edge async jobs. Assumes Edge is configured in async mode, where ?async=true is used at the end of any 4.0 service configuration URI for POST, PUT, and DELETE calls.
      uriParameters:
        jobId:
          required: true
          displayName: jobId
          description: Job ID
      get:
        displayName: nsxEdgeJobRead
        description: Retrieve job status (SUCCESS/FAILED/QUEUED/RUNNING/ROLLBACK), URI of the resource, and ID of the resource as shown in response body
/3.0/edges/{edgeID}:
  displayName: nsxEdgeUpgrade
  description: Upgrading NSX Edge
  uriParameters:
    edgeID:
      required: true
      displayName: edgeID
      description: Specified Edge
  post:
    displayName: nsxEdgeUpgrade
    description: Upgrade NSX Edge
    queryParameters:
      action:
        required: true
        displayName: action
        description: Set this to 'upgrade'
/2.0/services/truststore:
  displayName: truststore
  description: Operation on truststore (certificates)
  /certificate:
    displayName: certificate
    description: Certificates and certificate chains
    post:
      displayName: certificateCSRCreate
      description: Create certificate for CSR
      body:
        application/xml:
          example: |
            <trustObject>
              <pemEncoding></pemEncoding>
            </trustObject>
          schema: certificateCSRCreate
    /scope/{scopeId}:
      displayName: certificateScope
      description: Certificates for a scope
      uriParameters:
        scopeId:
          required: true
          displayName: scopeId
          description: Scope ID
      get:
        displayName: certificateScopeRead
        description: Query all certificates for a scope
    /{scopeId}: # PDF pg 159
      displayName: certificateSelfSigned
      description: Working with vShield Edge self-signed certificates
      uriParameters:
        scopeId:
          required: true
          displayName: scopeId
          description: Scope ID
      post:
        displayName: certificateSelfSignedCreate
        description: Create a single certificate
        body:
          application/xml:
            example: |
              <trustObject>
                <pemEncoding></pemEncoding>
                <privateKey></privateKey>
                <passphrase></passphrase>
              </trustObject>
            schema: certificateSelfSignedCreate
    /{certificateId}:
      displayName: certificate
      description: Certificate specified by ID
      uriParameters:
        certificateId:
          required: true
          displayName: certificateId
          description: certificate ID
      get:
        displayName: certificateRead
        description: Retrieve the certificate object specified by ID. If the ID specifies a chain, multiple certificate objects are retrieved.
      delete:
        displayName: certificateDelete
        description: Delete the specified certificate
  /csr/{scopeId}:
    displayName: csrCreate
    description: Create Certificate Signing Requests (CSRs)
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: Specified scope ID
    post:
      displayName: csrCreate
      description: Create a CSR
      body:
        application/xml:
          example: |
            <csr>
              <subject>
                <attribute>
                  <key></key>
                  <value></value>
                </attribute>
              </subject>
              <algorithm></algorithm>
              <keySize></keySize>
            </csr>
          schema: csrCreate
  /csr/{csrId}:
    displayName: csrSelfSigned
    description: Self signed certificate for CSR
    uriParameters:
      csrId:
        required: true
        displayName: csrId
        description: CSR ID
    put:
      displayName: csrSelfSignedUpdate
      description: Create a self signed certificate for CSR
      queryParameters:
        noOfDays:
          displayName: noOfDays
          required: true
    get:
      displayName: csrSelfSignedRead
      description: Retrieve specific CSR
  /csr/scope/{scopeId}:
    displayName: csrScope
    description: CSRs for specific scope
    uriParameters:
      scopeId:
        displayName: scopeId
        description: Specified scope
        required: true
    get:
      displayName: csrScopeRead
      description: Query CSRs for specific scope
  /crl/{scopeId}:
    displayName: crlScopeCreate
    description: Create Certificate Revocation Lists (CRLs) on a specified scope
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: Specified scope
    post:
      displayName: crlScopeCreate
      description: Create CRL on the specified scope
      body:
        application/xml:
          example: |
            <trustObject>
              <pemEncoding></pemEncoding>
            </trustObject>
          schema: crlScopeCreate
  /crl/scope/{scopeId}:
    displayName: crlScopeRead
    description: Retrieve all certificates for the specified scope
    uriParameters:
      scopeId:
        displayName: scopeId
        description: Specified scope
        required: true
    get:
      displayName: crlScopeRead
      description: Retrieve all certificates for the specified scope
  /crl/{crlId}:
    displayName: crlID
    description: CRL certificates for specified certificate
    uriParameters:
      crlId:
        required: true
        displayName: crlId
        description: CRL ID
    get:
      displayName: crlIDRead
      description: Retrieve certificate object for specified crlID
    delete:
      displayName: crlIDDelete
      description: Delete the specified CRL
/2.0/services/policy:
  displayName: policy
  description: Operations on policy objects
  /securitypolicy:
    displayName: securityPolicy
    description: Working with security policies (Endpoint, firewall, network introspection services applied to security group)
    post:
      displayName: securityPolicyCreate
      description: Create a security policy
      body:
        application/xml:
          example: |
            <securityPolicy>
              <name></name>
              <description></description>
              <precedence></precedence>
              <parent>
                <objectId></objectId>
              </parent>
              <securityGroupBinding>
                <objectId></objectId>
              </securityGroupBinding>
              <actionsByCategory>
                <category></category>
                <action class="">
                  <name></name>
                  <description></description>
                  <category></category>
                  <actionType></actionType>
                  <isActionEnforced></isActionEnforced>
                  <isActive></isActive>
                  <isEnabled></isEnabled>
                  <secondarySecurityGroup>
                    <objectId></objectId>
                  </secondarySecurityGroup>
                  <applications>
                    <application>
                      <objectId></objectId>
                    </application>
                    <applicationGroup>
                      <objectId></objectId>
                    </applicationGroup>
                  </applications>
                  <logged></logged>
                  <scope>
                    <id></id>
                    <name></name>
                    <objectTypeName></objectTypeName>
                  </scope>
                </action>
                <direction></direction>
                <outsideSecondaryContainer></outsideSecondaryContainer>
                </actionsByCategory>
            </securityPolicy>
          schema: securityPolicyCreate
    /{ID}:
      displayName: securityPolicyID
      description: Specific security policy
      uriParameters:
        ID:
          required: true
          displayName: ID
          description: ID of desired security policy (or 'all' to include all security policies for the securityPolicyID read method)
      get:
        displayName: securityPolicyIDRead
        description: Retrieve security policy information
      put:
        displayName: securityPolicyIDUpdate
        description: Edit a security policy
        body:
          application/xml:
            example: |
              <securityPolicy>
                <securityPolicy>
                  <name></name>
                  <description></description>
                  <precedence></precedence>
                  <parent>
                    <objectId></objectId>
                  </parent>
                  <securityGroupBinding>
                    <objectId></objectId>
                  </securityGroupBinding>
                  <actionsByCategory>
                    <category></category>
                    <action class="">
                      <name></name>
                      <description></description>
                      <category></category>
                      <actionType></actionType>
                      <isActionEnforced></isActionEnforced>
                      <isActive></isActive>
                      <isEnabled></isEnabled>
                      <secondarySecurityGroup>
                        <objectId></objectId>
                      </secondarySecurityGroup>
                      <applications>
                        <application>
                          <objectId></objectId>
                        </application>
                        <applicationGroup>
                          <objectId></objectId>
                        </applicationGroup>
                      </applications>
                      <logged></logged>
                      <scope>
                        <id></id>
                        <name></name>
                        <objectTypeName></objectTypeName>
                      </scope>
                    </action>
                    <direction></direction>
                    <outsideSecondaryContainer></outsideSecondaryContainer>
                  </actionsByCategory>
                </securityPolicy>
              </securityPolicy>
            schema: securityPolicyIDUpdate
      delete:
        displayName: securityPolicyIDDelete
        description: Delete a security policy
        queryParameters:
          force:
            type: boolean
            displayName: force
            description: If set to true, security policy is deleted even if it is being used somewhere
      /securityactions:
        displayName: securityActions
        description: Security actions for a security policy
        get:
          displayName: securityActionsRead
          description: Retrieve security actions for a security policy
    /hierarchy:
      displayName: hierarchy
      description: Security policy configuration import/export
      post:
        displayName: hierarchyCreate
        description: Import a security policy configuration
        queryParameters:
          suffix:
            displayName: suffix
            description: (optional) Added after names
        body:
          application/xml:
            example: |
              <securityPolicyHierarchy>
                <name></name>
                <description></description>
                <securityPolicy></securityPolicy>
                <securityGroup></securityGroup>
              </securityPolicyHierarchy>
            schema: hierarchyCreate
      get:
        displayName: hierarchyRead
        description: Export a Service Composer configuration and save to your desktop for use as a backup
        queryParameters:
          policyIds:
            displayName: policyIds
            description: Comma separated security policy id's
          prefix:
            displayName: prefix
            description: (optional) Some prefix to add before the names of the objects in the exported XML
  /securityaction/category/virtualmachines:
    displayName: securityActionVM
    description: Virtual machines for a security action
    get:
      displayName: securityActionVMRead
      description: Fetch all vm objects on which security action of a given category and attribute has been applied
      queryParameters:
        attributeKey:
          displayName: attributeKey
          description: Attribute name
        attributeValue:
          displayName: attributeValue
          description: Attribute value
  /securitygroup/{ID}/securityactions:
    displayName: securityActionSecGroup
    description: Security actions on a security group
    uriParameters:
      ID:
        displayName: ID
        description: Specified security group
    get:
      displayName: securityActionRead
      description: Query all security actions applicable on a security group
  /virtualmachine/{ID}/securityactions:
    displayName: vmApplicableSecurityAction
    description: Fetch the security actions applicable on a virtual machine
    uriParameters:
      ID:
        displayName: ID
        description: VM ID
    get:
      displayName: vmApplicableSecurityAction
      description: Fetch the security actions applicable on a virtual machine
  /policy/serviceprovider/firewall:
    displayName: serviceComposerDFWSync
    description: Synchronizing Service Composer rules with distributed firewall
    get:
      displayName: serviceComposerDFWSyncRead
      description: Query the time since when Service Composer firewall is out of sync with dfw, or synchronize Service Composer firewall with dfw
  /policy/securitygroup/{ID}/securitypolicies:
    displayName: secGroupPolicies
    description: Retrieve security policies mapped to a security group
    uriParameters:
      ID:
        displayName: ID
        description: Specified security group ID
    get:
      displayName: secGroupPoliciesRead
      description: Retrieve security policies mapped to a security group

#%RAML 0.8
title: VMware NSX for vSphere
baseUri: https://{nsxmanager}/api
baseUriParameters:
  nsxmanager:
    displayName: nsxManager
    description: This is the hostname or IP address of the NSX Manager
version: 6.2.3
securedBy: [basic]
schemas:
  - advancedConfigUpdate: !include schemas/advancedConfigUpdate.xsd
    allUsersUpdate: !include schemas/allUsersUpdate.xsd
    applianceMgrBackupSettingsUpdate: !include schemas/applianceMgrBackupSettingsUpdate.xsd
    applianceUpdate: !include schemas/applianceUpdate.xsd
    applicationProfilesCreate: !include schemas/applicationProfilesCreate.xsd
    applicationProfileUpdate: !include schemas/applicationProfileUpdate.xsd
    appRulesCreate: !include schemas/appRulesCreate.xsd
    appRuleUpdate: !include schemas/appRuleUpdate.xsd
    arpMAC: !include schemas/arpMAC.xsd
    authSettingsUpdate: !include schemas/authSettingsUpdate.xsd
    autoConfigUpdate: !include schemas/autoConfigUpdate.xsd
    bridingUpdate: !include schemas/bridingUpdate.xsd
    certificateCSRCreate: !include schemas/certificateCSRCreate.xsd
    certificateSelfSignedCreate: !include schemas/certificateSelfSignedCreate.xsd
    clientConfigUpdate: !include schemas/clientConfigUpdate.xsd
    cliSettingsUpdate: !include schemas/cliSettingsUpdate.xsd
    clusterUpdate: !include schemas/clusterUpdate.xsd
    controller: !include schemas/controller.xsd
    controllerSyslog: !include schemas/controllerSyslog.xsd
    crlScopeCreate: !include schemas/crlScopeCreate.xsd
    csrCreate: !include schemas/csrCreate.xsd
    dataCollectionKillSwitch: !include schemas/dataCollectionKillSwitch.xsd
    dataCollectionVMCreate: !include schemas/dataCollectionVMCreate.xsd
    defaultFirewallPolicyUpdate: !include schemas/defaultFirewallPolicyUpdate.xsd
    dfwConfigImport: !include schemas/dfwConfigImport.xsd
    dfwDraftsCreate: !include schemas/dfwDraftsCreate.xsd
    dfwDraftUpdate: !include schemas/dfwDraftUpdate.xsd
    dfwIPFixUpdate: !include schemas/dfwIPFixUpdate.xsd
    dfwPerformanceUpdate: !include schemas/dfwPerformanceUpdate.xsd
    dfwSection: !include schemas/dfwSection.xsd
    dfwThresholdsUpdate: !include schemas/dfwThresholdsUpdate.xsd
    dfwRule: !include schemas/dfwRule.xsd
    dhcpRelayUpdate: !include schemas/dhcpRelayUpdate.xsd
    dhcpUpdate: !include schemas/dhcpUpdate.xsd
    dhcpPoolCreate: !include schemas/dhcpPoolCreate.xsd
    dhcpStaticBindingCreate: !include schemas/dhcpStaticBindingCreate.xsd
    dlpIncludeSecGroupUpdate: !include schemas/dlpIncludeSecGroupUpdate.xsd
    dlpEnableRegulation: !include schemas/dlpEnableRegulation.xsd
    dlpExcludeArea: !include schemas/dlpExcludeArea.xsd
    dlpExcludeSecGroupUpdate: !include schemas/dlpExcludeSecGroupUpdate.xsd
    dlpFileFiltersUpdate: !include schemas/dlpFileFiltersUpdate.xsd
    dlpRegexClassificationValue: !include schemas/dlpRegexClassificationValue.xsd
    dlpScanning: !include schemas/dlpScanning.xsd
    dnsUpdate: !include schemas/dnsUpdate.xsd
    domainCreate: !include schemas/domainCreate.xsd
    edgeDnsUpdate: !include schemas/edgeDnsUpdate.xsd
    edgeNatConfig: !include schemas/edgeNatConfig.xsd
    edgeNatRulesCreate: !include schemas/edgeNatRulesCreate.xsd
    edgeNatRuleUpdate: !include schemas/edgeNatRuleUpdate.xsd
    eLogServerCreate: !include schemas/eLogServerCreate.xsd
    firewallRuleUpdate: !include schemas/firewallRuleUpdate.xsd
    firewallRulesCreate: !include schemas/firewallRulesCreate.xsd
    flowsExcludeCreate: !include schemas/flowsExcludeCreate.xsd
    globalFirewallConfigUpdate: !include schemas/globalFirewallConfigUpdate.xsd
    hierarchyCreate: !include schemas/hierarchyCreate.xsd
    highAvailabilityCreate: !include schemas/highAvailabilityCreate.xsd
    installPackagesCreate: !include schemas/installPackagesCreate.xsd
    installPackageUpdate: !include schemas/installPackageUpdate.xsd
    interfacesCreate: !include schemas/interfacesCreate.xsd
    ipAddressRequest: !include schemas/ipAddressRequest.xsd
    ipPool: !include schemas/ipPool.xsd
    ipPoolUpdate: !include schemas/ipPoolUpdate.xsd
    ipSet: !include schemas/ipSet.xsd
    layer3RedirectSectionsCreate: !include schemas/layer3RedirectSectionsCreate.xsd
    layer3RedirectSectionUpdate: !include schemas/layer3RedirectSectionUpdate.xsd
    layoutUpdate: !include schemas/layoutUpdate.xsd
    lbMonitorsCreate: !include schemas/lbMonitorsCreate.xsd
    lbMonitorUpdate: !include schemas/lbMonitorUpdate.xsd
    ldapServerCreate: !include schemas/ldapServerCreate.xsd
    loadBalancerConfig: !include schemas/loadBalancerConfig.xsd
    logicalSwitchCreate: !include schemas/logicalSwitchCreate.xsd
    logicalSwitchVmAttach: !include schemas/logicalSwitchVmAttach.xsd
    logicalSwitchConnCheck: !include schemas/logicalSwitchConnCheck.xsd
    logicalSwitchPing: !include schemas/logicalSwitchPing.xsd
    macSetCreateUpdate: !include schemas/macSetCreateUpdate.xsd
    mgmtInterfaceUpdate: !include schemas/mgmtInterfaceUpdate.xsd
    netExtipPoolsCreate: !include schemas/netExtipPoolsCreate.xsd
    netExtipPoolsUpdate: !include schemas/netExtipPoolsUpdate.xsd
    nsxControllerPasswordUpdate: !include schemas/nsxControllerPasswordUpdate.xsd
    nsxEdgesCreate: !include schemas/nsxEdgesCreate.xsd
    nsxEdgeDnsUpdate: !include schemas/nsxEdgeDnsUpdate.xsd
    nsxEdgeUpdate: !include schemas/nsxEdgeUpdate.xsd
    nsxEdgeFirewallConfigUpdate: !include schemas/nsxEdgeFirewallConfigUpdate.xsd
    nwFabricConfig: !include schemas/nwFabricConfig.xsd
    nwfabricClustersUpdate: !include schemas/nwfabricClustersUpdate.xsd
    nwfabricHostsUpdate: !include schemas/nwfabricHostsUpdate.xsd
    poolsCreate: !include schemas/poolsCreate.xsd
    poolUpdate: !include schemas/poolUpdate.xsd
    privateNetworksCreate: !include schemas/privateNetworksCreate.xsd
    privateNetworkUpdate: !include schemas/privateNetworkUpdate.xsd
    routingBGPUpdate: !include schemas/routingBGPUpdate.xsd
    routingConfigUpdate: !include schemas/routingConfigUpdate.xsd
    routingConfigStaticUpdate: !include schemas/routingConfigStaticUpdate.xsd
    routingGlobalConfigUpdate: !include schemas/routingGlobalConfigUpdate.xsd
    routingISISUpdate: !include schemas/routingISISUpdate.xsd
    routingOSPFUpdate: !include schemas/routingOSPFUpdate.xsd
    rulesCreate: !include schemas/rulesCreate.xsd
    ruleUpdate: !include schemas/ruleUpdate.xsd
    scriptCreate: !include schemas/scriptCreate.xsd
    scriptFileIDUpdate: !include schemas/scriptFileIDUpdate.xsd
    scriptUpdate: !include schemas/scriptUpdate.xsd
    secGroupGlobalCreate: !include schemas/secGroupGlobalCreate.xsd
    secGroupBulkObjectUpdate: !include schemas/secGroupBulkObjectUpdate.xsd
    securityFabricCreate: !include schemas/securityFabricCreate.xsd
    securityPolicyCreate: !include schemas/securityPolicyCreate.xsd
    securityPolicyIDUpdate: !include schemas/securityPolicyIDUpdate.xsd
    securityTagCreate: !include schemas/securityTagCreate.xsd
    serverSettingsUpdate: !include schemas/serverSettingsUpdate.xsd
    serviceGroupsCreate: !include schemas/serviceGroupsCreate.xsd
    serviceGroupUpdate: !include schemas/serviceGroupUpdate.xsd
    servicesScopeCreate: !include schemas/servicesScopeCreate.xsd
    serviceUpdate: !include schemas/serviceUpdate.xsd
    serviceUpgrade: !include schemas/serviceUpgrade.xsd
    solutionIPPortSet: !include schemas/solutionIPPortSet.xsd
    spoofGuardPoliciesCreate: !include schemas/spoofGuardPoliciesCreate.xsd
    spoofGuardPolicyApprove: !include schemas/spoofGuardPolicyApprove.xsd
    spoofGuardPolicyUpdate: !include schemas/spoofGuardPolicyUpdate.xsd
    sslVPNUpdate: !include schemas/sslVPNUpdate.xsd
    ssoConfig: !include schemas/ssoConfig.xsd
    syslogUpdate: !include schemas/syslogUpdate.xsd
    systemLocaleUpdate: !include schemas/systemLocaleUpdate.xsd
    systemSyslogServerUpdate: !include schemas/systemSyslogServerUpdate.xsd
    systemTimeUpdate: !include schemas/systemTimeUpdate.xsd
    universalSyncConfigurationManagersThumbprintUpdate: !include schemas/universalSyncConfigurationManagersThumbprintUpdate.xsd
    userRoleMgmtCreate: !include schemas/userRoleMgmtCreate.xsd
    userRoleMgmtUpdate: !include schemas/userRoleMgmtUpdate.xsd
    usersCreate: !include schemas/usersCreate.xsd
    usersUpdate: !include schemas/usersUpdate.xsd
    vcConfig: !include schemas/vcConfig.xsd
    vdsContext: !include schemas/vdsContext.xsd
    vdnSegment: !include schemas/vdnSegment.xsd
    vdnSegmentUpdate: !include schemas/vdnSegmentUpdate.xsd
    vdnMulticast: !include schemas/vdnMulticast.xsd
    vdnMulticastUpdate: !include schemas/vdnMulticastUpdate.xsd
    vdnScopeCreate: !include schemas/vdnScopeCreate.xsd
    vdnScopeEdit: !include schemas/vdnScopeEdit.xsd
    vdnScopeUpdate: !include schemas/vdnScopeUpdate.xsd
    virtualServersCreate: !include schemas/virtualServersCreate.xsd
    vShieldVendorCreate: !include schemas/vShieldVendorCreate.xsd
    vShieldSolutionCreate: !include schemas/vShieldSolutionCreate.xsd
    vShieldSolutionActivate: !include schemas/vShieldSolutionActivate.xsd
    webResourcesCreate: !include schemas/webResourcesCreate.xsd
securitySchemes:
  - basic:
      type: Basic Authentication
/2.0/vdn/switches:
  displayName: vdsManage
  description: This collection of methods are used to configure and prepare the VDS's for the use with NSX
  post:
    displayName: vdsPrepare
    description: prepares a pre-configured vds with teaming and MTU options, MTU must be 1600 or higher
    body:
      application/xml:
        example: |
          <vdsContext>
            <switch>
              <objectId></objectId>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <revision></revision>
                <objectTypeName></objectTypeName>
            </switch>
            <teaming></teaming>
            <mtu></mtu>
          </vdsContext>
        schema: vdsContext
  get:
    displayName: vdsList
    description: Lists all vds's
  /datacenter/{datacenterID}:
    displayName: vdsInDc
    description: Lists all VDS's in a specified vSphere Datacenter Object
    uriParameters:
      datacenterID:
          required: true
          displayName: datacenterID
          description: A valid Datacenter Id (e.g. datacenter-4)
    get:
      displayName: vdsListInDc
      description: Lists all VDS's in a specified vSphere Datacenter Object
  /{vdsId}:
    displayName: vds
    description: Retrieve a specific vds by specific switchId (e.g. dvs-26)
    uriParameters:
      vdsId:
          required: true
          displayName: switchId
          description: A valid switch (VDS) Id (e.g. dvs-26)
    get:
      displayName: vdsShow
      description: Retrieve a specific vds by specific switchId (e.g. dvs-26)
    delete:
      displayName: vdsDelete
      description: Delete a specific vds by specific switchId (e.g. dvs-26)
/2.0/vdn/config:
  displayName: vdnConfig
  description: Configurations of Segment ID's and Multicast Ranges for logical switches
  /segments:
    displayName: vdnSegmentPools
    description: Operations on Segment ID's (VXLAN Idd)
    post:
      displayName: vdnSegmentPoolAdd
      description: Add a segment ID Pool
      queryParameters:
          isUniversal:
            displayName: isUniversal
            description: Set to "true" when creating a universal VNI pool.
            type: boolean
            required: false
      body:
        application/xml:
          example: |
            <segmentRange>
              <name></name>
              <begin></begin>
              <end></end>
            </segmentRange>
          schema: vdnSegment
    get:
      displayName: vdnSegmentPoolList
      description: Lists all Segment ID Pools
    /{segmentPoolId}:
      displayName: vdnSegmentPool
      description: Operations on individual segment ID Pool
      uriParameters:
        segmentPoolId:
          required: true
          displayName: segmentPoolId
          description: A valid segment Pool Id
      get:
        displayName: vdnSegmentPoolShow
        description: Retrieve details of an individual segment ID Pool
      put:
        displayName: vdnSegmentPoolChange
        description: Update an individual segment ID Pool
        body:
          application/xml:
            example: |
              <segmentRange>
                <end></end>
                <name></name>
              </segmentRange>
            schema: vdnSegmentUpdate
      delete:
        displayName: vdnSegmentPoolDelete
        description: Delete an individual segment ID Pool
  /multicasts:
    displayName: vdnMulticastPools
    description: Operations on multicast range Pools for logical switches
    post:
      displayName: vdnMulticastPoolAdd
      description: Adds a multicast range for logical switches
      queryParameters:
          isUniversal:
            displayName: isUniversal
            description: Set to "true" when creating a universal multicast range.
            type: boolean
            required: false
      body:
        application/xml:
          example: |
            <multicastRange>
              <name></name>
              <desc></desc>
              <begin></begin>
              <end></end>
            </multicastRange>
          schema: vdnMulticast
    get:
      displayName: vdnMulticastPoolList
      description: List all configured vdn Multicast Pools
    /{multicastAddresssRangeId}:
      displayName: vdnMulticastPool
      description: Operations in individual multicast range Pools for logical switches
      uriParameters:
        multicastAddresssRangeId:
          required: true
          displayName: multicastAddresssRangeId
          description: A valid multicast Pool range Id
      get:
        displayName: vdnMulticastPoolShow
        description: Retrieve details of an individual Multicast range Pool
      put:
        displayName: vdnMulticastPoolChange
        description: Update an individual Multicast range Pool
        body:
          application/xml:
            example: |
              <multicastRange>
                <name></name>
                <desc></desc>
                <end></end>
              </multicastRange>
            schema: vdnMulticastUpdate
      delete:
        displayName: vdnSegmentPoolDelete
        description: Delete an individual Multicast range Pool
  /vxlan/udp/port:
    displayName: vdnConfigUDP
    description: View configured UDP port for VXLAN
    get:
      displayName: vdnConfigUDPShow
      description: View configured UDP port for VXLAN
    /{portNumber}:
      displayName: vdnConfigUDPUpdate
      description: Updates the UDP Port used for VXLAN
      uriParameters:
        portNumber:
          required: true
          displayName: portNumber
          description: A valid UDP Port for VXLAN
      put:
        displayName: vdnConfigUDPUpdate
        description: Updates the UDP Port used for VXLAN
  /resources/allocated:
    displayName: allocatedResources
    description: Query allocated resources
    get:
      displayName: allocatedResourcesRead
      description: Retrieve a list of resources allocated
      queryParameters:
        type:
          displayName: type
          description: set to "segmentId" or "multicastAddress"
        pagesize:
          displayName: pagesize
          description: Optional; limits the maximum number of entries returned. Valid range is 1-1024, default is 256
        startindex:
          displayName: startindex
          description: Optional; specifies the starting point for retrieval. If not specified, resources are retrieved from the beginning
/2.0/vdn/scopes:
  displayName: vdnScopes
  description: Read all scopes (transport zones), or create a new scope (Transport Zone)
  get:
    displayName: vdnScopesList
    description: Retrieve a list of all known VDN Scopes / Transport Zones
  post:
    displayName: vdnScopeCreate
    description: Create a new Transport Zone. Note that you can only add one initial cluster when creating the TZ.
    queryParameters:
      isUniversal:
        displayName: isUniversal
        description: Set to "true" when creating a universal transport zone.
        type: boolean
        required: false
    body:
      application/xml:
        example: |
          <vdnScope>
            <name></name>
            <clusters>
              <cluster>
                <cluster>
                  <objectId></objectId>
                </cluster>
              </cluster>
            </clusters>
            <controlPlaneMode></controlPlaneMode>
            <description></description>
          </vdnScope>
        schema: vdnScopeCreate
  /{scopeId}:
    displayName: vdnScope
    description: Read, update and delete an existing scope (transport Zone)
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: A valid scope Id
    get:
      displayName: vdnScopeProperties
      description: Retrieve the properties of an existing network scope
    post:
      displayName: vdnScopeChange
      description: Updates a transport zone, you can add a cluster to or delete a cluster from a transport zone
      queryParameters:
        action:
          displayName: action
          description: Mandatory queryParameter, use 'expand' to add a cluster, or 'shrink' to remove a cluster from the TZ
          required: true
      body:
        application/xml:
          example: |
            <vdnScope>
              <objectId></objectId>
              <clusters>
                <cluster>
                  <cluster>
                    <objectId></objectId>
                  </cluster>
                </cluster>
              </clusters>
            </vdnScope>
          schema: vdnScopeEdit
    delete:
      displayName: vdnScopeDelete
      description: delete a transport zone
    /attributes:
      displayName: vdnScopeAttribUpdate
      description: update the attributes of a transport zone (e.g. Name, description)
      put:
        displayName: vdnScopeAttribUpdate
        description: update the attributes of a transport zone (e.g. Name, description)
        body:
          application/xml:
            example: |
              <vdnScope>
                <clusters>
                  <cluster>
                    <cluster>
                      <objectId></objectId>
                    </cluster>
                  </cluster>
                </clusters>
                <objectId></objectId>
                <name></name>
                <description></description>
                <controlPlaneMode></controlPlaneMode>
              </vdnScope>
            schema: vdnScopeUpdate
    /conn-check/multicast:
      displayName: vdnScopeConnCheck
      description: Test multicast group connectivity in a transport zone
      post:
        displayName: vdnScopeConnCheck
        description: Test multicast group connectivity in a transport zone
        body:
          application/xml:
/2.0/vdn/scopes/{scopeId}/virtualwires:
  displayName: logicalSwitches
  description: Create and List operations of logical switches inside a Transport Zone (scope)
  uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: A valid scope Id
  get:
    displayName: logicalSwitchList
    description: Lists all logical Switches in the Transport Zone (Scope)
  post:
    displayName: logicalSwitchCreate
    description: creates a logicalSwitch
    body:
      application/xml:
        example: |
          <virtualWireCreateSpec>
            <name></name>
            <description></description>
            <tenantId></tenantId>
            <controlPlaneMode></controlPlaneMode>
          </virtualWireCreateSpec>
        schema: logicalSwitchCreate
/2.0/vdn/virtualwires:
  displayName: logicalSwitchesGlobal
  description: List Operations of logicalSwitches in all transport Zones (scope)
  get:
    displayName: logicalSwitchesRead
    description: List all logicalSwitches
    queryParameters:
      startIndex:
        displayName: startIndex
        description: optional; specify starting point for retrieving logical switches
        default: 0
      pageSize:
        displayName: pageSize
        description: optional; limit the max number of entries returned. Valid range is 1-1024
        default: 20
  /vm/vnic:
    displayName: logicalSwitchVmAttach
    description: Migrate a Virtual Maschine vnic to a logical switch
    post:
      displayName: logicalSwitchVmAttach
      description: Migrate a Virtual Maschine vnic to a logical switch
      body:
        application/xml:
          example: |
            <com.vmware.vshield.vsm.inventory.dto.VnicDto>
              <objectId></objectId>
              <vnicUuid></vnicUuid>
              <portgroupId></portgroupId>
            </com.vmware.vshield.vsm.inventory.dto.VnicDto>
          schema: logicalSwitchVmAttach
  /{virtualWireID}:
    displayName: logicalSwitch
    description: Retrieves the configuration of an individual logical switch
    uriParameters:
      virtualWireID:
        required: true
        displayName: virtualWireID
        description: A logical switch id, e.g. virtualwire-1002
    get:
      displayName: logicalSwitchShow
      description: Retrieves the configuration of an individual logical switch
    put:
      displayName: logicalSwitchUpdate
      description: Update a logical switch, possible updates are name changes & Controlplane Mode
    delete:
      displayName: logicalSwitchDelete
      description: Delete a logical switch
    /conn-check/multicast:
      displayName: logicalSwitchConnCheck
      description: Test multicast group connectivity in logical switch
      post:
        displayName: logicalSwitchConnCheck
        description: Test multicast group connectivity in logical switch
        body:
          application/xml:
            example: |
              <testParameters>
                <gateway></gateway>
                <packetSizeMode></packetSizeMode>
                <packetSize></packetSize>
                <sourceHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </sourceHost>
                <destinationHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </destinationHost>
              </testParameters>
            schema: logicalSwitchConnCheck
    /conn-check/p2p:
      displayName: logicalSwitchPing
      description: Perform point to point connectivity test between two hosts across which a logical switch spans
      post:
        displayName: logicalSwitchPing
        description: Perform point to point connectivity test between two hosts across which a logical switch spans
        body:
          application/xml:
            example: |
              <testParameters>
                <gateway></gateway>
                <packetSizeMode></packetSizeMode>
                <packetSize></packetSize>
                <sourceHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </sourceHost>
                <destinationHost>
                  <hostId></hostId>
                  <switchId></switchId>
                  <vlanId></vlanId>
                </destinationHost>
              </testParameters>
            schema: logicalSwitchPing
/2.0/xvs/networks/{ID}/features:
  displayName: arpMAC
  description: Working with ARP suppression and MAC learning for logical switches
  uriParameters:
    ID:
      required: true
      displayName: ID
      description: dvpg MoID or virtual wire ID
  get:
    displayName: arpMACRead
    description: Query ARP suppression and MAC learning information
  put:
    displayName: arpMAC
    description: Enable or disable ARP suppression and MAC learning
    body:
      application/xml:
        example: |
          <networkFeatureConfig>
            <ipDiscoveryConfig>
              <enabled></enabled>
            </ipDiscoveryConfig>
            <macLearningConfig>
              <enabled></enabled>
            </macLearningConfig>
          </networkFeatureConfig>
        schema: arpMAC
/2.0/vdn/controller:
  displayName: nsxControllers
  description: Working with NSX controllers
  post:
    displayName: nsxControllerCreate
    description: Add a new controller on a specified cluster. Request without body to upgrade controller cluster
    body:
      application/xml:
        example: |
          <controllerSpec>
            <name></name>
            <description></description>
            <ipPoolId></ipPoolId>
            <resourcePoolId></resourcePoolId>
            <hostId></hostId>
            <datastoreId></datastoreId>
            <deployType></deployType>
            <networkId></networkId>
            <password></password>
          </controllerSpec>
        schema: controller
  get:
    displayName: nsxControllersRead
    description: Retrieve details and runtime status for all controllers
  /upgrade-available:
    displayName: nsxControllerUpgradeAvailability
    description: Query controller upgrade availability
    get:
      displayName: nsxControllerUpgradeAvailability
      description: Query controller upgrade availability
  /progress/{jobId}:
    displayName: nsxControllerJob
    description: Status of controller creation or removal
    uriParameters:
      jobId:
        required: true
        displayName: jobId
        description: Specified job Id
    get:
      displayName: nsxControllerJobRead
      description: Retrieve status of controller creation or removal. Returns percentage indication of job progress
  /{controllerId}:
    displayName: nsxController
    description: Working with specified controller
    uriParameters:
      controllerId:
        required: true
        displayName: controllerId
        description: Specified controller
    delete:
      displayName: nsxControllerDelete
      description: Delete NSX controller. When deleting last controller from cluster, forceRemoval must be set to true
      queryParameters:
        forceRemoval:
          type: boolean
          required: true
          displayName: forceRemoval
          description: Force removal of controller (true/false)
    /techsupportlogs:
      displayName: nsxControllerLogs
      description: Controller logs
      get:
        displayName: nsxControllerLogsRead
        description: Retrieve controller logs
    /syslog:
      displayName: nsxControllerSyslog
      description: Syslog exporter on controller node
      post:
        displayName: nsxControllerSyslogCreate
        description: Add controller syslog exporter on the controller
        body:
          application/xml:
            example: |
              <controllerSyslogServer>
                <syslogServer></syslogServer>
                <port></port>
                <protocol></protocol>
                <level></level>
              </controllerSyslogServer>
            schema: controllerSyslog
      get:
        displayName: nsxControllerSyslogRead
        description: Retrieve details about the syslog exporter on the controller
      delete:
        displayName: nsxControllerSyslogDelete
        description: Delete the syslog exporter
    /snapshot:
      displayName: nsxControllerSnapshot
      description: Take a snapshot of the control cluster from the specified controller node
      get:
        displayName: nsxControllerSnapshot
        description: Take a snapshot of the control cluster from the specified controller node
  /cluster:
    displayName: nsxControllerCluster
    description: Cluster configuration
    get:
      displayName: nsxControllerClusterRead
      description: Retrieve cluster-wise configuration information for controller
    put:
      displayName: nsxControllerClusterUpdate
      description: Modify cluster configuration information for controller
      body:
        application/xml:
          example: |
            <controllerConfig>
              <sslEnabled></sslEnabled>
            </controllerConfig>
          schema: clusterUpdate
  /credential:
    displayName: nsxControllerPassword
    description: Change the NSX controller password
    put:
      displayName: nsxControllerPasswordUpdate
      description: Change the NSX controller password
      body:
        application/xml:
          example: |
            <controllerCredential>
              <apiPassword></apiPassword>
            </controllerCredential>
          schema: nsxControllerPasswordUpdate
/2.0/services/application/scope/{scopeId}:
  displayName: servicesScope
  description: Working with services on a scope
  uriParameters:
    scopeId:
      required: true
      displayName: scopeId
      description: Can be "globalroot-0", "universalroot-0" or datacenterId in upgrade use cases.
  get:
    displayName: servicesScopeRead
    description: List services that have been created on the scope
  post:
    displayName: servicesScopeCreate
    description: Create a new service on the specified scope
    body:
      application/xml:
        example: |
          <application>
            <objectId></objectId>
            <type>
              <typeName/>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <element>
              <applicationProtocol>mandatory</applicationProtocol>
              <value>mandatory</value>
            </element>
          </application>
        schema: servicesScopeCreate
/2.0/services/application/{applicationId}:
  displayName: service
  description: Working with a specified service
  uriParameters:
    applicationId:
      required: true
      displayName: applicationId
      description: Specified as returned by a servicesScope POST call
  get:
    displayName: serviceRead
    description: Retrieve details about the specified service
  put:
    displayName: serviceUpdate
    description: Modify the name, description, applicationProtocol, or port value of a service
    body:
      application/xml:
        example: |
          <application>
            <objectId></objectId>
            <type>
              <typeName></typeName>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <element>
              <applicationProtocol></applicationProtocol>
              <value></value>
            </element>
          </application>
        schema: serviceUpdate
  delete:
    displayName: serviceDelete
    description: Delete the specified service
    queryParameters:
      force:
        type: boolean
        required: false
        displayName: force
        description: Indicates if the delete should be forced or unforced. The default is unforced (false)
/2.0/services/applicationgroup:
  displayName: applicationgroup
  description: Operations on Application Groups
  /{scopeId}:
    displayName: serviceGroups
    description: Working with service groups
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: The scopeId can be "globalroot-0", "universalroot-0" or datacenterId in upgrade use cases
    post:
      displayName: serviceGroupsCreate
      description: Create a new service group on the specified scope
      body:
        application/xml:
          example: |
            <applicationGroup>
              <description></description>
              <name></name>
              <revision></revision>
              <inheritanceAllowed></inheritanceAllowed>
            </applicationGroup>
          schema: serviceGroupsCreate
    get:
      displayName: serviceGroupsRead
      description: Retrieve a list of service groups that have been created on the scope
  /{applicationgroupId}:
    displayName: serviceGroup
    description: Working with an individual service group
    uriParameters:
      applicationgroupId:
        required: true
        displayName: applicationgroupId
        description: Application group ID
    get:
      displayName: serviceGroupRead
      description: Retrieve details about a service group
    put:
      displayName: serviceGroupUpdate
      description: Modify the name, description, applicationProtocol, or port value of a service group
      body:
        application/xml:
          example: |
            <applicationGroup>
              <objectId></objectId>
              <type>
                <typeName></typeName>
              </type>
              <name></name>
              <description></description>
              <revision></revision>
              <objectTypeName></objectTypeName>
              <scope>
                <id></id>
                <objectTypeName></objectTypeName>
                <name></name>
              </scope>
              <extendedAttributes></extendedAttrubutes>
              <inheritanceAllowed></inheritanceAllowed>
              <member>
                <objectId></objectId>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <revision></revision>
                <objectTypeName></objectTypeName>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
              </member>
            </applicationGroup>
          schema: serviceGroupUpdate
    delete:
      displayName: serviceGroupDelete
      description: Delete a service group from a scope
      queryParameters:
        force:
          type: boolean
          required: false
          displayName: force
          description: Indicates if the delete should be forced or unforced. The default is unforced (false)
    /members/{moref}:
      displayName: serviceGroupMembers
      description: Add or delete service group members
      uriParameters:
        moref:
          required: true
          displayName: moref
          description: Management object reference to the member
      put:
        displayName: serviceGroupMembersCreate
        description: Add a member to the service group
      delete:
        displayName: serviceGroupMembersDelete
        description: Delete a member from the service group
  /scope/{scopeId}/members:
    displayName: serviceGroupMembersRead
    description: Get the members of a service group
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: globalroot-0 or datacenterId in upgrade use cases
    get:
      displayName: serviceGroupMembersRead
      description: Get a list of member elements that can be added to the service groups created on a particular scope.
/2.0/services/ipam/pools/scope/{scopeId}:
  displayName: ipPools
  description: Create a pool of IP addresses
  uriParameters:
    scopeId:
      required: true
      displayName: scopeId
      description: globalroot-0 or datacenterId in upgrade use cases
  get:
    displayName: ipPoolRead
    description: Read all IP Pools in a scope
  post:
    displayName: ipPoolCreate
    description: Create a pool of IP addresses
    body:
      application/xml:
        example: |
          <ipamAddressPool>
            <name></name>
            <prefixLength></prefixLength>
            <gateway></gateway>
            <dnsSuffix></dnsSuffix>
            <dnsServer1></dnsServer1>
            <dnsServer2></dnsServer2>
            <ipRanges>
              <ipRangeDto>
                <startAddress></startAddress>
                <endAddress></endAddress>
              </ipRangeDto>
            </ipRanges>
          </ipamAddressPool>
        schema: ipPool
/2.0/services/ipam/pools/{poolId}:
  displayName: ipPool
  description: Working with a specified IP pool
  uriParameters:
    poolId:
      required: true
      displayName: poolId
      description: Specified IP pool
  get:
    displayName: ipPoolRead
    description: Retrieve details about the IP pool
  put:
    displayName: ipPoolUpdate
    description: Modify an IP pool
    body:
      application/xml:
        example: |
          <ipamAddressPool>
            <objectId></objectId>
            <objectTypeName></objectTypeName>
            <vsmUuid></vsmUuid>
            <revision></revision>
            <type>
              <typeName></typeName>
            </type>
            <name></name>
            <extendedAttributes></extendedAttributes>
            <prefixLength></prefixLength>
            <gateway></gateway>
            <dnsSuffix></dnsSuffix>
            <dnsServer1></dnsServer1>
            <dnsServer2></dnsServer2>
            <ipRanges>
              <ipRangeDto>
                <id></id>
                <startAddress></startAddress>
                <endAddress></endAddress>
              </ipRangeDto>
            </ipRanges>
          </ipamAddressPool>
        schema: ipPoolUpdate
  delete:
    displayName: ipPoolDelete
    description: Delete an IP pool
  /ipaddresses:
    displayName: ipPoolAllocate
    description: Work with IP's and their allocation status in IP Pools
    get:
      displayName: ipPoolIpsRead
      description: Retrieve all IP's and their allocation status in an IP Pool
    post:
      displayName: ipPoolAllocateIp
      description: |
        Allocate an IP Address from the pool. Use 'ALLOCATE' in the 'allocationMode' field in the
        body to allocate the next available ip. To allocate a specific one use 'RESERVE' and
        pass the IP to reserve in the 'ipAddress' fiels in the body
      body:
        application/xml:
          example: |
            <ipAddressRequest>
              <allocationMode></allocationMode>
              <ipAddress></ipAddress>
            </ipAddressRequest>
          schema: ipAddressRequest
    /{ipAddress}:
      displayName: ipAddressRelease
      description: Release an IP Address allocation in the Pool
      uriParameters:
        ipAddress:
          required: true
          displayName: ipAddress
          description: The Id of the ip address to release, e.g. '192.168.10.10'
      delete:
        displayName: ipAddressRelease
        description: Release an IP Address allocation in the Pool
/2.0/services/securitytags/tag:
  displayName: securityTag
  description: Working with security tags
  post:
    displayName: securityTagCreate
    description: Create a new security tag
    body:
      application/xml:
        example: |
          <securityTag>
            <objectTypeName></objectTypeName>
            <type>
              <typeName></typeName>
            </type>
            <name></name>
            <description></description>
            <extendedAttributes></extendedAttributes>
          </securityTag>
        schema: securityTagCreate
  get:
    displayName: securityTagRead
    description: Retrieve security tags
  /{tagId}:
    displayName: securityTagDelete
    description: Delete a security tag
    uriParameters:
      tagId:
        description: Specified security tag
        displayName: tagId
        required: true
    delete:
      displayName: securityTagDelete
      description: Delete the specified security tag
    /vm:
      displayName: securityTagVMsList
      description: Retrieve the list of vm's that have the specified tag attached to them
      get:
        displayName: securityTagVMsList
        description: Retrieve the list of vm's that have the specified tag attached to them
      /{vmMoid}:
        displayName: securityTagVM
        description: Apply or detach a security tag to virtual machine
        uriParameters:
          vmMoid:
            description: ID of VM
            displayName: vmMoid
            required: true
        put:
          displayName: securityTagVMAttach
          description: Apply a security tag to virtual machine
        delete:
          displayName: securityTagVMDetach
          description: Detach a security tag from a virtual machine
/2.0/services/ssoconfig:
  displayName: ssoConfig
  description: Operations on NSX Manager SSO registration
  get:
    displayName: ssoConfigRead
    description: Query SSO Details
  post:
    displayName: ssoConfigSet
    description: Register NSX Manager to SSO Services
    body:
      application/xml:
        example: |
          <ssoConfig>
            <ssoLookupServiceUrl></ssoLookupServiceUrl>
            <ssoAdminUsername></ssoAdminUsername>
            <ssoAdminUserpassword></ssoAdminUserpassword>
            <certificateThumbprint></certificateThumbprint>
          </ssoConfig>
        schema: ssoConfig
  delete:
    displayName: ssoConfigDelete
    description: Deletes the NSX Manager SSO Configuration
  /status:
    displayName: ssoStatus
    description: Query the SSO configuration status of NSX Manager
    get:
      displayName: ssoStatusRead
      description: Query the SSO configuration status of NSX Manager
/2.0/services/usermgmt:
  displayName: userMgmt
  description: User Management Operations
  /user/{userId}:
    displayName: userMgmtUser
    description: Manage users
    uriParameters:
      userId:
        required: true
        displayName: userId
        description: user ID
    get:
      displayName: userMgmtUserRead
      description: Get information about a user
    delete:
      displayName: userMgmtUserDelete
      description: Remove the NSX role for a vCenter user
  /role/{userId}:
    displayName: userRoleMgmt
    description: Manage roles for users
    uriParameters:
      userId:
        required: true
        displayName: userId
        description: user to retrieve role information from
    get:
      displayName: userMgmtRoleRead
      description: Retrieve a user's role (possible roles are super_user, vshield_admin, enterprise_admin, security_admin, and audit)
    post:
      displayName: userMgmtRoleCreate
      description: Add role and resources for a user
      queryParameters:
        isGroup:
          displayName: isGroup
          description: Set to "true" to apply to a group; set to "false" to apply to an individual user
          required: true
          type: boolean
      body:
        application/xml:
          example: |
            <accessControlEntry>
              <role></role>
              <resource>
                <resourceId></resourceId>
              </resource>
            </accessControlEntry>
          schema: userRoleMgmtCreate
    put:
      displayName: userMgmtRoleUpdate
      description: Change a user's role
      body:
        application/xml:
          example: |
            <accessControlEntry>
              <role></role>
              <resource>
                <resourceId></resourceId>
              </resource>
            </accessControlEntry>
          schema: userRoleMgmtUpdate
    delete:
      displayName: userMgmtRoleDelete
      description: Delete the role assignment for specified vCenter user. Once this role is deleted, the user is removed from NSX Manager. You cannot delete the role for a local user.
  /enablestate/{value}:
    displayName: userMgmtState
    description: Change the state of a user account (enabled/disabled)
    uriParameters:
      value:
        required: true
        type: integer
        displayName: value
        description: value can be 0 to disable, or 1 to enable
    put:
      displayName: userMgmtStateUpdate
      description: Enable or disable a user account
  /users/vsm:
    displayName: userNSXManagerInfo
    description: Get information about users who have been assigned a NSX Manager role (local users as well as vCenter users with NSX Manager role)
    get:
      displayName: userNSXManagerInfoRead
      description: Get information about users who have been assigned a NSX Manager role (local users as well as vCenter users with NSX Manager role)
  /roles:
    displayName: userMgmtRoles
    description: NSX Manager user management operations on roles
    get:
      displayName: userMgmtRoleRead
      description: Read all possible roles in NSX Manager
  /scopingobjects:
    displayName: userScopingObjects
    description: Retrieve a list of objects that can be used to define a user's access scope
    get:
      displayName: userScopingObjectsRead
      description: Retrieve a list of objects that can be used to define a user's access scope
/2.0/services/securitygroup:
  displayName: secGroup
  description: Operations on securitygroups
  /bulk/{scopeId}:
    displayName: secGroupCreate
    description: Create a new security group on a global scope or universal scope. Use either "globalroot-0" or "universalroot-0"
    uriParameters:
       scopeId:
         required: true
         displayName: scopeId
         description: In the current version the scopeId will always be globalroot-0
    post:
      displayName: secGroupCreate
      description: Create a new security group on a global scope
      body:
        application/xml:
          example: |
            <securitygroup>
              <objectId></objectId>
              <objectTypeName></objectTypeName>
              <vsmUuid></vsmUuid>
              <revision></revision>
              <type>
                <typeName></typeName>
              </type>
              <name></name>
              <scope>
                <id></id>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <name></name>
                <revision></revision>
              </scope>
              <clientHandle></clientHandle>
              <extendedAttributes></extendedAttributes>
              <member>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes></extendedAttributes>
              </member>
              <excludeMember>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes></extendedAttributes>
              </excludeMember>
              <dynamicMemberDefinition>
                <dynamicSet>
                  <operator></operator>
                  <dynamicCriteria>
                    <operator></operator>
                    <key></key>
                    <criteria></criteria>
                    <value></value>
                  </dynamicCriteria>
                </dynamicSet>
              </dynamicMemberDefinition>
            </securitygroup>
          schema: secGroupGlobalCreate
  /bulk/{objectId}:
    displayName: secGroupUpdate
    description: Update a specific security group
    uriParameters:
      objectId:
        required: true
        displayName: objectId
        description: Security group to modify
    put:
      displayName: secGroupUpdate
      description: Update a specific security group
      body:
        application/xml:
          example: |
            <securitygroup>
              <objectId></objectId>
              <objectTypeName></objectTypeName>
              <vsmUuid></vsmUuid>
              <revision></revision>
              <type>
                <typeName></typeName>
              </type>
              <name></name>
              <scope>
                <id></id>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <name></name>
                <revision></revision>
              </scope>
              <clientHandle></clientHandle>
              <extendedAttributes></extendedAttributes>
              <member>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes/>
              </member>
              <excludeMember>
                <objectId></objectId>
                <objectTypeName></objectTypeName>
                <vsmUuid></vsmUuid>
                <revision></revision>
                <type>
                  <typeName></typeName>
                </type>
                <name></name>
                <scope>
                  <id></id>
                  <objectTypeName></objectTypeName>
                  <name></name>
                </scope>
                <clientHandle></clientHandle>
                <extendedAttributes><extendedAttributes/>
              </excludeMember>
              <dynamicMemberDefinition>
                <dynamicSet>
                  <operator></operator>
                  <dynamicCriteria>
                    <operator></operator>
                    <key></key>
                    <criteria></criteria>
                    <value></value>
                  </dynamicCriteria>
                </dynamicSet>
              </dynamicMemberDefinition>
            </securitygroup>
          schema: secGroupBulkObjectUpdate
  /scope/{scopeId}:
    displayName: secGroupScope
    description: Operations to list information about security groups on a given scope
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: scopeId can be "globalroot-0", "universalroot-0" or datacenterID/portgroupID in upgrade use cases
    get:
      displayName: secGroupScopeRead
      description: List all the security groups created on a specific scope
    /memberTypes:
      displayName: secGroupMemberTypes
      description: Information on valid elements that can be added to a security group
      get:
        displayName: secGroupScopeMembersRead
        description: Retrieve a list of valid elements that can be added to a security group.
    /members/{memberType}:
      displayName: secGroupScopeMemberByType
      description: Retrieve members of a specific type under a scope
      uriParameters:
        memberType:
          required: true
          displayName: memberType
          description: Specific member type
      get:
        displayName: secGroupScopeMemberTypeRead
        description: Retrieve members of a specific type under a scope
  /{objectId}:
    displayName: secGroupObject
    description: Operations for an individual security group
    uriParameters:
      objectId:
        required: true
        displayName: objectId
        description: Specified security group
    get:
      displayName: secGroupObjectRead
      description: Retrieve all members of the specified security group
    delete:
      displayName: secGroupObjectDelete
      description: Delete an existing security group
      queryParameters:
        force:
          displayName: force
          required: true
          type: boolean
    /members/{memberMoref}:
      displayName: secGroupMember
      description: Operations on members of an individual security group
      uriParameters:
        memberMoref:
          required: true
          displayName: memberMoref
          description: Security group member
      put:
        displayName: secGroupMemberUpdate
        description: Add a new member to specified security group
      delete:
        displayName: secGroupMemberDelete
        description: Delete member from specified security group
    /translation/virtualmachines:
      displayName: secGroupVMNodes
      get:
        displayName: secGroupVMNodesRead
        description: Retrieve list of VmNode entities that belong to a specific security group.
    /translation/ipaddresses:
      displayName: secGroupIPNodes
      get:
        displayName: secGroupIPNodesRead
        description: Retrieve list of IpNode entities that belong to a specific security group.
    /translation/macaddresses:
      displayName: secGroupMacNodes
      get:
        displayName: secGroupMacNodesRead
        description: Retrieve list of MacNode entities that belong to a specific security group.
    /translation/vnics:
      displayName: secGroupVnicNodes
      get:
        displayName: secGroupVnicNodesRead
        description: Retrieve list of VnicNode entities that belong to a specific security group.
  /lookup/virtualmachine/{virtualMachineId}:
    displayName: secGroupLookupVM
    description: Retrieve list of security groups that the specified virtual machine belongs to.
    uriParameters:
      virtualMachineId:
        required: true
        displayName: virtualMachineId
        description: Specified virtual machine
    get:
      displayName: secGroupLookupVMRead
      description: Retrieve list of security groups that the specified virtual machine belongs to.
  /internal/scope/{scopeId}:
    displayName: secGroupInternal
    description: Information on internal security groups
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: Specified transport zone (scope)
    get:
      displayName: secGroupInternalRead
      description: Retrieve all internal security groups on the NSX Manager. These are used internally by the system and should not be created or modified by end users.
/2.0/services/ipset:
  displayName: ipsets
  description: Operations on IP Sets
  /scope/{scopeMoref}:
    displayName: ipsetList
    uriParameters:
      scopeMoref:
        required: true
        displayName: ipsetScopeMoref
        description: For scopeMoref use "globalroot-0" for non-universal IP sets and use "universalroot-0" for universal IP sets.
    get:
      displayName: ipsetList
      description: Retrieve all configured IPSets
  /{scopeMoref}:
    displayName: ipsetCreate
    uriParameters:
      scopeMoref:
        required: true
        displayName: ipsetScopeMoref
        description: For scopeMoref use "globalroot-0" for non-universal IP sets and use "universalroot-0" for universal IP sets.
    post:
      displayName: ipsetCreate
      description: creates a new IPset
      body:
        application/xml:
          example: |
            <ipset>
              <objectId></objectId>
              <type>
                <typeName></typeName>
              </type>
              <description></description>
              <name></name>
              <revision></revision>
              <objectTypeName></objectTypeName>
              <value></value>
              <inheritanceAllowed></inheritanceAllowed>
            </ipset>
          schema: ipSet
  /{ipsetId}:
    displayName: ipset
    uriParameters:
      ipsetId:
        required: true
        displayName: ipsetId
        description: The IPset to be queried or changed
    get:
      displayName: ipsetRead
      description: Retrieve an individual IPset
    put:
      displayName: ipsetUpdate
      description: Modify an existing IPset
    delete:
      displayName: ipsetDelete
      description: delete an IPset
      queryParameters:
          force:
            displayName: force
            description: Set to "true" when forcing the removal of an IP set.
            type: boolean
            required: false
/2.0/services/vcconfig:
  displayName: vCenterConfig
  description: Configuring NSX Manager with vCenter Server
  get:
    displayName: vCenterConfigRead
    description: Get vCenter Server configuration details on NSX Manager
  put:
    displayName: vCenterConfigUpdate
    description: Synchronize NSX Manager with vCenter server
    body:
      application/xml:
        example: |
          <vcInfo>
            <ipAddress></ipAddress>
            <userName></userName>
            <password></password>
            <certificateThumbprint></certificateThumbprint>
            <assignRoleToUser></assignRoleToUser>
            <pluginDownloadServer></pluginDownloadServer>
            <pluginDownloadPort></pluginDownloadPort>
          </vcInfo>
        schema: vcConfig
  /status:
    displayName: vCenterStatus
    description: Connection status for vCenter Server
    get:
      displayName: vCenterStatusRead
      description: Get default vCenter Server connection status
/2.0/universalsync:
  displayName: universalSync
  description: Configuring Universal Sync for the NSX manager
  /configuration:
    /role:
      displayName: universalSyncConfigurationRole
      description: Universal Sync Configuration
      post:
        displayName: universalSyncConfigurationRoleSet
        description: Set the Universal Sync Configuration role
        queryParameters:
          action:
            displayName: action
            description: Set the role of the NSX manager. Possible values are set-as-standalone, set-as-primary,  set-as-secondary
      get:
        displayName: universalSyncConfigurationRoleRead
        description: Get the Universal Sync Configuration role
    /nsxmanagers:
      displayName: universalSyncConfigurationNsxManagers
      description: Universal sync configuration of NSX managers
      delete:
        displayName: universalSyncConfigurationNsxManagersDelete
        description: Delete secondary NSX manager configuration
      /thumbprint:
        displayName: universalSyncConfigurationNsxManagersThumbprint
        description: Universal sync configuration NSX manager thumbprint
        put:
          displayName: universalSyncConfigurationNsxManagersThumbprintUpdate
          description: Update the NSX manager thumprint in the universal sync configuration
          body:
            application/xml:
              example: |
                <nsxManagerInfo>
                  <uuid></uuid>
                  <nsxManagerIp></nsxManagerIp>
                  <certificateThumbprint></certificateThumbprint>
                  <isPrimary></isPrimary>
                </nsxManagerInfo>
              schema: universalSyncConfigurationManagersThumbprintUpdate
        /{nsxManagerID}:
          displayName: universalSyncConfigurationManagers
          description: Universal sync configuration of a specific NSX manager
          get:
            displayName: universalSyncConfigurationManagersRead
            description: Query universal sync configuration information on a specific NSX manager by ID
          delete:
            displayName: universalSyncConfigurationManagersDelete
            description: Delete a secondary NSX manager by ID
            queryParameters:
              forceRemoval:
                type: boolean
                required: false
                displayName: universalSyncConfigurationManagerDeleteforceRemoval
                description: Force removal of a secondary NSX manager (true/false)
  /sync:
    displayName: universalSyncSync
    description: Sync all objects on the NSX manager
    post:
      displayName: universalSyncSync
      description: Sync all objects on the NSX manager
      queryParameters:
        action:
          displayName: application
          description: Use "invoke" to sync all objects on the NSX manager
  /entitystatus:
    displayName: universalSyncEntityStatus
    description: The status of an universal sync entity
    get:
      displayName: universalSyncEntityStatusRead
      description: Read the status of a universal sync entity
      queryParameters:
        objectType:
          displayName: objectType
          description: Specifiy the object type. For example "VdnScope"
        objectId:
          displayName: objectId
          description: Specify the bojectID. For example "globalvdnscope"
  /status:
    displayName: universalSyncStatus
    description: Universal sync status
    get:
      displayName: universalSyncStatusRead
      description: Read the universal sync status
/1.0/appliance-management:
  displayName: applianceManager
  description: Working with Appliance Manager
  /global/info:
    displayName: globalInfo
    description: Global appliance manager information
    get:
      displayName: globalInfoRead
      description: Retrieve global information containing version information as well as current logged in user
  /summary/system:
    displayName: systemInfo
    description: Summary appliance manager information
    get:
      displayName: summaryInfoRead
      description: Retrieve system summary info such as address, dns name, version, CPU, memory and storage
  /summary/components:
    displayName: componentInfo
    description: Component information
    get:
      displayName: componentInfoRead
      description: Retrieve summary of all available components and their status info
  /system/restart:
    displayName: systemReboot
    description: Reboot the appliance manager
    post:
      displayName: systemReboot
      description: Reboot the appliance manager
  /system/cpuinfo:
    displayName: systemCPUInfo
    description: CPU Info
    get:
      displayName: systemCPUInfo
      description: Query CPU information
  /system/uptime:
    displayName: systemUptime
    description: Appliance Manager uptime
    get:
      displayName: systemUptime
      description: Query appliance manager uptime
  /system/meminfo:
    displayName: systemMemoryInfo
    description: Appliance Manager memory
    get:
      displayName: systemMemoryInfo
      description: Query memory
  /system/storageinfo:
    displayName: systemStorageInfo
    description: Appliance Manager storage
    get:
      displayName: systemStorageInfo
      description: Query storage
  /system/network:
    displayName: networkSettings
    description: Working with network settings
    get:
      displayName: networkSettingsRead
      description: Retrieve network information i.e. host name, IP address, DNS settings
    /dns:
      displayName: dns
      description: Configure DNS
      put:
        displayName: dnsUpdate
        description: Configure DNS
        body:
          application/xml:
            example: |
              <dns>
                <ipv4Address></ipv4Address>
                <ipv6Address></ipv6Address>
                <domainList></domainList>
              </dns>
            schema: dnsUpdate
      delete:
        displayName: dnsDelete
        description: Delete DNS servers
  /system/timesettings:
    displayName: systemTime
    description: Working with time settings
    get:
      displayName: systemTimeRead
      description: Retrieve time settings
    put:
      displayName: systemTimeUpdate
      description: Configure time or specify the NTP server to use for time synchronization
      body:
        application/xml:
          example: |
            <timeSettings>
              <ntpServer>
                <string></string>
              </ntpServer>
              <datetime></datetime>
              <timezone></timezone>
            </timeSettings>
          schema: systemTimeUpdate
    /ntp:
      displayName: ntp
      description: Delete NTP server
      delete:
        displayName: ntpDelete
        description: Delete NTP server
  /system/locale:
    displayName: systemLocale
    description: Configure locale
    get:
      displayName: systemLocaleRead
      description: Retrieve locale info
    put:
      displayName: systemLocaleUpdate
      description: Configure locale
      body:
        application/xml:
          example: |
            <locale>
              <language></language>
              <country></country>
            </locale>
          schema: systemLocaleUpdate
  /system/syslogserver:
    displayName: systemSyslogServer
    description: Working with syslog servers
    get:
      displayName: systemSyslogServerRead
      description: Retrieve syslog servers
    put:
      displayName: systemSyslogServerUpdate
      description: Configure syslog servers
      body:
        application/xml:
          example: |
            <syslogserver>
              <syslogServer></syslogServer>
              <port></port>
              <protocol></protocol>
            </syslogserver>
          schema: systemSyslogServerUpdate
    delete:
      displayName: systemSyslogServerDelete
      description: Delete syslog servers
  /components:
    displayName: componentsManagement
    description: Components management
    get:
      displayName: componentsManagementRead
      description: Retrieve all Appliance Manager components
    /{componentID}:
      displayName: componentManagement
      description: Specific component management
      uriParameters:
        componentID:
          required: true
          displayName: componentID
          description: Specified component ID
      get:
        displayName: componentManagementRead
        description: Retrieve details for specified component
      /dependencies:
        displayName: componentDependencies
        description: Component dependencies
        get:
          displayName: componentDependenciesRead
          description: Retrieve dependency details for specified component
      /dependents:
        displayName: componentDependents
        description: Component dependents
        get:
          displayName: componentDependentsRead
          description: Retrieve dependents for the specified component
      /status:
        displayName: componentStatus
        description: Component status
        get:
          displayName: componentStatusRead
          description: Retrieve current status for specified component
  /backuprestore/backupsettings:
    displayName: applianceMgrBackupSettings
    description: Appliance Manager backup settings
    get:
      displayName: applianceMgrBackupSettingsRead
      description: Retrieve backup settings
    put:
      displayName: applianceMgrBackupSettingsUpdate
      description: Configure backup on the Appliance Manager
      body:
        application/xml:
          example: |
            <backupRestoreSettings>
              <ftpSettings>
                <transferProtocol></transferProtocol>
                <hostNameIPAddress></hostNameIPAddress>
                <port></port>
                <userName></userName>
                <password></password>
                <backupDirectory></backupDirectory>
                <filenamePrefix></filenamePrefix>
                <passiveMode></passiveMode>
                <useEPRT></useEPRT>
                <useEPSV></useEPSV>
              </ftpSettings>
              <backupFrequency>
                <frequency></frequency>
                <dayOfWeek></dayOfWeek>
                <hourOfDay></hourOfDay>
                <minuteOfHour></minuteOfHour>
              </backupFrequency>
              <excludeTables>
                <excludeTable></excludeTable>
              </excludeTables>
            </backupRestoreSettings>
          schema: applianceMgrBackupSettingsUpdate
    delete:
      displayName: applianceMgrBackupSettingsDelete
      description: Delete Appliance Manager backup configuration
  /backuprestore/backup:
    displayName: applianceMgrBackup
    description: On-demand backup
    post:
      displayName: applianceMgrBackup
      description: Backup NSX data on-demand
  /backuprestore/backups:
    displayName: applianceMgrBackups
    description: Retrieve list of all backups available at configured backup location
    get:
      displayName: applianceMgrBackupsRead
      description: Retrieve list of all backups available at configured backup location
  /backuprestore/restore:
    displayName: applianceMgrBackupRestore
    description: Restore data from a backup file
    post:
      displayName: applianceMgrBackupRestore
      description: Restore data from a backup file
      queryParameters:
        restoreFile:
          required: true
          displayName: restoreFile
          description: file name of restore file
  /techsupportlogs/{componentID}:
    displayName: techLogs
    description: Generate tech support logs
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Specified component to generate tech support logs
    post:
      displayName: techLogsCreate
      description: Generate tech support logs
  /techsupportlogs/{filename}:
    displayName: techLogsDownload
    description: Download tech support logs
    uriParameters:
      filename:
        required: true
        displayName: filename
        description: Name of log file to download
    get:
      displayName: techLogsDownload
      description: Download tech support logs
  /notifications:
    displayName: notifications
    description: Working with support notifications
    get:
      displayName: notificationsRead
      description: Retrieve all system generated notifications
    delete:
      displayName: notificationsDelete
      description: Delete all notifications
    /{ID}/acknowledge:
      displayName: notificationsAcknowledge
      description: Acknowledge a notification
      uriParameters:
        ID:
          displayName: ID
          description: Notification ID
          required: true
      post:
        displayName: notificationsAcknowledge
        description: Acknowledge a notification
  /upgrade/uploadbundle/{componentID}:
    displayName: upgrade
    description: NSX Manager upgrade details
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Component ID
    post:
      displayName: upgradeBundleUpload
      description: Upload upgrade bundle
    get:
      displayName: upgradeBundleDetails
      description: Query upgrade details (after uploading upgrade bundle)
  /upgrade/start/{componentID}:
    displayName: upgradeStart
    description: Start upgrade process
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Component ID
    get:
      displayName: upgradeStart
      description: Start upgrade process
  /status/{componentID}:
    displayName: upgradeStatus
    description: Query upgrade status
    uriParameters:
      componentID:
        required: true
        displayName: componentID
        description: Component ID
    get:
      displayName: upgradeStatus
      description: Query upgrade status
  /certificatemanager/certificates/nsx:
    displayName: certificateManager
    description: NSX Manager certificate manager
    get:
      displayName: certificateManagerCertificatesNsxRead
      description: Query the certificate thumbprint from a NSX manager
/2.0/systemevent:
  displayName: systemEvents
  description: Get NSX Manager system events
  get:
    displayName: systemEventsRead
    description: Get NSX Manager system events
    queryParameters:
      startIndex:
        displayName: startIndex
        description: optional; specify starting point for retrieving the logs
      pageSize:
        displayName: pageSize
        description: optional; limit the max number of entries returned. Valid range is 1-1024
        default: 256
/2.0/auditlog:
  displayName: auditLogs
  description: Get NSX Manager audit logs
  get:
    displayName: auditLogsRead
    description: Get NSX Manager audit logs
    queryParameters:
      startIndex:
        displayName: startIndex
        description: optional; specify starting point for retrieving the logs
      pageSize:
        displayName: pageSize
        description: optional; limit the max number of entries returned. Valid range is 1-1024
        default: 256
/2.0/nwfabric:
  displayName: nwfabric
  description: Network virtualization components
  /configure:
    displayName: nwfabricConfig
    description: Install components
    post:
      displayName: nwfabricConfigCreate
      description: |
         Install network virtualization components
      body:
        application/xml:
          example: |
            <nwFabricFeatureConfig>
              <featureId></featureId>
              <resourceConfig>
                <resourceId></resourceId>
              </resourceConfig>
            </nwFabricFeatureConfig>
          schema: nwFabricConfig
      queryParameters:
        action:
          displayName: action
          description: If used, set to "synchronize" to reset communication between NSX Manager and a host/cluster
    put:
      displayName: nwfabricConfigUpdate
      description: Upgrade network virtualization components
      body:
        application/xml:
          schema: nwFabricConfig
    delete:
      displayName: nwfabricConfigDelete
      description: Delete network virtualization components
      body:
        application/xml:
          schema: nwFabricConfig
  /features:
    displayName: nwfabricFeatures
    get:
      displayName: nwfabricFeatures
      description: Retrieves all features available on the cluster
  /status:
    displayName: nwfabricStatus
    get:
      displayName: nwfabricStatus
      description: Retrieves the Status of Resources
      queryParameters:
        resource:
          displayName: resource
          description: This is a valid vCenter MOID, e.g. domain-c34 for a cluster
          required: true
    /child/{parentResourceID}:
      displayName: childStatus
      description: Status of child resources
      uriParameters:
        parentResourceID:
          required: true
          displayName: parentResourceID
          description: Parent resource ID
      get:
        displayName: childStatusRead
        description: Retrieve status
    /alleligible/{resourceType}:
      displayName: statusResourceType
      description: Status of resources by criterion
      uriParameters:
        resourceType:
          required: true
          displayName: resourceType
          description: Valid resource type
      get:
        displayName: statusResourceTypeRead
        description: Query status of resources by criterion
  /clusters/{clusterID}:
    displayName: nwfabricClusters
    description: Network virtualization component cluster configuration
    get:
      displayName: nwfabricClustersRead
      description: Read the locale ID on a cluster
    put:
      displayName: nwfabricClustersUpdate
      description: Update the locale ID on a cluster
      body:
        application/xml:
          example: |
            <nwFabricClusterConfig>
              <localeId></localeId>
            </nwFabricClusterConfig>
          schema: nwfabricClustersUpdate
    delete:
      displayName: nwfabricClustersDelete
      description: Delete locale ID on a cluster
  /hosts/{hostID}:
    displayName: nwfabricHosts
    description: Network virtualization component host configuration
    get:
      displayName: nwfabricHostsRead
      description: Read the locale ID on a host
    put:
      displayName: nwfabricHostsUpdate
      description: Update the locale ID on a host
      body:
        application/xml:
          example: |
            <nwFabricHostConfig>
              <localeId></localeId>
            </nwFabricHostConfig>
          schema: nwfabricHostsUpdate
    delete:
      displayName: nwfabricHostsDelete
      description: Delete locale ID on a host
/2.0/si/deploy:
  displayName: securityFabric
  description: Security fabric
  post:
    displayName: securityFabricCreate
    description: Deploy security fabric
    queryParameters:
      startTime:
        displayName: startTime
        description: Time to start deployment task. If not specified, deploy immediately
    body:
      application/xml:
        example: |
          <clusterDeploymentConfigs>
            <clusterDeploymentConfig>
              <clusterId></clusterId>
              <datastore></datastore>
              <services>
                <serviceDeploymentConfig>
                  <serviceId></serviceId>
                  <dvPortGroup></dvPortGroup>
                  <ipPool></ipPool>
                </serviceDeploymentConfig>
              </services>
            </clusterDeploymentConfig>
          </clusterDeploymentConfigs>
        schema: securityFabricCreate
  put:
    displayName: serviceUpgrade
    description: Upgrade service to recent version
    queryParameters:
      startTime:
        displayName: startTime
        description: optional; specify time to start upgrade
    body:
      application/xml:
        example: |
          <clusterDeploymentConfigs>
            <clusterDeploymentConfig>
              <clusterId></clusterId>
              <datastore></datastore>
              <services>
                <serviceDeploymentConfig>
                  <serviceId></serviceId>
                  <serviceInstanceId></serviceInstanceId>
                  <dvPortGroup></dvPortGroup>
                  <ipPool></ipPool>
                </serviceDeploymentConfig>
              </services>
            </clusterDeploymentConfig>
          </clusterDeploymentConfigs>
        schema: serviceUpgrade
  /service/{serviceID}:
    displayName: service
    description: Working with a specified service
    uriParameters:
      serviceID:
        displayName: serviceID
        description: Specified service
        required: true
    get:
      displayName: serviceRead
      description: Retrieve all clusters on which the service is installed
    delete:
      displayName: serviceDelete
      description: Uninstall specified service from specified clusters
      queryParameters:
        clusters:
          displayName: clusters
          description: Comma-separated list of cluster id's that service needs to be uninstalled from
        startTime:
          displayName: startTime
          description: Time for uninstall to be scheduled. If not specified, uninstall immediately
    /dependsOn:
      displayName: serviceDependency
      description: Identify service on which the specified service depends on
      get:
        displayName: serviceDependencyRead
        description: Identify service on which the specified service depends on
  /cluster/{clusterID}:
    displayName: serviceCluster
    description: Working with installed services on a cluster
    uriParameters:
      clusterID:
        required: true
        displayName: clusterID
        description: Cluster ID
    get:
      displayName: serviceRead
      description: Retrieve all services deployed along with their status
    delete:
      displayName: serviceDelete
      description: Uninstall a service. Fails if you try to remove a service that another service depends on
      queryParameters:
        services:
          displayName: services
          description: Comma-separated list of service id's to specify which services to uninstall
        startTime:
          displayName: startTime
          description: time for uninstall to be scheduled. If not specified, do immediately
    /service/{serviceID}:
      displayName: serviceDetails
      description: Information about a service
      uriParameters:
        serviceID:
          displayName: serviceID
          description: Service ID on cluster
      get:
        displayName: serviceDetailsRead
        description: Retrieve detailed information about the service
/2.0/dlp:
  displayName: dataSecurityConfiguration
  description: Configuring Data Security
  /regulation:
    displayName: dlpRegulation
    description: Data loss prevention regulation
    get:
      displayName: dlpRegulationRead
      description: Retrieve the list of available regulations for a policy.
  /policy/regulations:
    displayName: dlpEnableRegulation
    description: Enable one or more regulations by putting the regulation IDs into the policy. You can get the IDs from the output of the dlpRegulation GET call
    put:
      displayName: dlpEnableRegulation
      description: Enable one or more regulations by putting the regulation IDs into the policy. You can get the IDs from the output of the dlpRegulation GET call
      body:
        application/xml:
          example: |
            <set>
              <long></long>
            </set>
          schema: dlpEnableRegulation
  /classificationvalue:
    displayName: dlpClassificationValue
    description: Classification values associated with regulations
    get:
      displayName: dlpClassificationValueRead
      description: Get all classification values
  /policy/classificationvalues:
    displayName: dlpRegexClassificationValue
    description: Configure a customized regex as a classification value
    put:
      displayName: dlpRegexClassificationValue
      description: Configure a customized regex as a classification value
      body:
        application/xml:
          example: |
            <set>
              <ClassificationValue>
                <id></id>
                <classification>
                  <id></id>
                  <name></name>
                  <providerName></providerName>
                  <description></description>
                  <customizable></customizable>
                </classification>
                <value></value>
              </ClassificationValue>
            </set>
          schema: dlpRegexClassificationValue
  /excludableareas:
    displayName: dlpExcludableAreas
    description: Retrieve list of datacenters, clusters, and resource pools that are excludable from policy inspection
    get:
      displayName: dlpExcludableAreas
      description: Retrieve list of datacenters, clusters, and resource pools that are excludable from policy inspection
  /policy/excludedareas:
    displayName: dlpExcludeArea
    description: (DEPRECATED; use PUT /2.0/dlp/policy/excludedsecuritygroups instead) Exclude areas from policy inspection
    put:
      displayName: dlpExcludeArea
      description: (DEPRECATED; use PUT /2.0/dlp/policy/excludedsecuritygroups instead) Exclude areas from policy inspection
      body:
        application/xml:
          example: |
            <set>
              <string></string>
            </set>
          schema: dlpExcludeArea
  /policy/includedsecuritygroups:
    displayName: dlpIncludeSecGroup
    description: Include security groups in data security scan
    get:
      displayName: dlpIncludeSecGroupRead
      description: Retrieve security groups that have been included in data security scans
    put:
      displayName: dlpIncludeSecGroupUpdate
      description: Include security groups in data security scan
      body:
        application/xml:
          example: |
            <set>
              <string></string>
              <string></string>
            </set>
          schema: dlpIncludeSecGroupUpdate
  /policy/excludedsecuritygroups:
    displayName: dlpExcludeSecGroup
    description: Exclude security groups in data security scan
    get:
      displayName: dlpExcludeSecGroupRead
      description: Retrieve security groups that have been excluded from data security scans
    put:
      displayName: dlpExcludeSecGroupUpdate
      description: Exclude security groups in data security scan
      body:
        application/xml:
          example: |
            <set>
              <string></string>
              <string></string>
              </set>
          schema: dlpExcludeSecGroupUpdate
  /policy/FileFilters:
    displayName: dlpFileFilters
    description: Configure file filters for scanning
    put:
      displayName: dlpFileFiltersUpdate
      description: Configure file filters for scanning
      body:
        application/xml:
          example: |
            <FileFilters>
              <scanAllFiles></scanAllFiles>
              <lastModifiedAfter></lastModifiedAfter>
              <extensionsIncluded></extensionsIncluded>
              <extensions></extensions>
            </FileFilters>
          schema: dlpFileFiltersUpdate
  /policy/saved:
    displayName: dlpPolicySave
    description: Retrieve last saved policy
    get:
      displayName: dlpPolicySave
      description: Get saved policy
  /policy/published:
    displayName: dlpPolicyPublished
    description: Retrieve currently published SDD policy
    get:
      displayName: dlpPolicyPublished
      description: Retrieve currently published policy
  /policy/publish:
    displayName: dlpPolicyPublish
    description: After updating a policy with added regulations, excluded areas, or customized regex values, publish an updated policy to enforce new parameters
    put:
      displayName: dlpPolicyPublish
      description: Publish the updated policy
  /scanop:
    displayName: dlpScanning
    description: Start, pause, resume, or stop a data security scan
    put:
      displayName: dlpScanning
      description: Start, pause, resume, or stop a data security scan
      body:
        application/xml:
          example: |
            <ScanOp></ScanOp>
          schema: dlpScanning
  /scanstatus:
    displayName: dlpScanStatus
    description: Retrieve the status of a scan operation
    get:
      displayName: dlpScanStatus
      description: Retrieve the status of a scan operation
  /scan/current/vms/{ID}:
    displayName: dlpScanVMs
    description: Retrieve information about the vm's being scanned
    uriParameters:
      ID:
        displayName: ID
        description: Limit filter results by VC MOID of datacenter, cluster, or resource pool
    get:
      displayName: dlpScanVMsRead
      description: Retrieve information about the vm's being scanned
      queryParameters:
        scanstatus:
          displayName: scanstatus
          description: Specify scan status of vm's to be retrieved (all|notstarted|started|completed)
        pagesize:
          displayName: pagesize
          description: Limit max number of entries returned. Valid range is 1-1024
          default: 256
        startindex:
          displayName: startindex
          description: Specify starting point for retrieving logs
  /completedscansummaries:
    displayName: dlpScanSummaries
    description: Retrieve start and end time, total number of vm's scanned, and total number of violations for the last five completed data security scans
    get:
      displayName: dlpScanSummariesRead
      description: Retrieve scan summaries
  /scan/{scanID}/detailsascsv:
    displayName: dlpPreviousScan
    description: Retrieve report on results of previous scan in CSV format
    uriParameters:
      scanID:
        required: true
        displayName: scanID
        description: Specified scan ID
    get:
      displayName: dlpPreviousScanRead
      description: Retrieve ID, Name, Scan status, and Violation counts for VM's scanned during specified scan
  /scan/{scanID}/policyasxml:
    displayName: dlpPolicyAsXML
    description: Retrieve XML representation of the policy used in the previous scan
    uriParameters:
      scanID:
        required: true
        displayName: scanID
        description: Specified previous scan
    get:
      displayName: dlpPolicyAsXML
      description: Retrieve XML representation of the policy used in the previous scan
  /violations:
    displayName: dlpViolations
    description: Query the regulations that have been violated in scans
    get:
      displayName: dlpViolationsRead
      description: Get violation count for entire inventory
    /{contextID}:
      displayName: dlpViolation
      description: Get violation count for specific resource
      uriParameters:
        contextID:
          required: true
          displayName: contextID
          description: Specified resource (moid of datacenter, cluster, folder, resource pool, or vm)
      get:
        displayName: dlpViolationRead
        description: Get violation count for specific resource
  /violatingfiles:
    displayName: dlpViolatingFiles
    description: Get violating files and the regulations each file violated
    get:
      displayName: dlpViolatingFilesRead
      description: Get violating files and the regulations each file violated
      queryParameters:
        pagesize:
          displayName: pagesize
          description: number of results to view
        startindex:
          displayName: startindex
          description: page number from which the results will be displayed
    /{contextID}:
      displayName: dlpViolatingFilesContext
      description: Get violating files for a resource
      uriParameters:
        contextID:
         required: true
         displayName: contextID
         description: Specified resource (moid of datacenter, cluster, folder, resource pool, or vm)
      get:
        displayName: dlpViolatingFilesContext
        description: Get violating files for a resource
        queryParameters:
          pagesize:
            displayName: pagesize
            description: number of results to view
          startindex:
            displayName: startindex
            description: page number from which the results will be displayed
  /violatingfilesascsv:
    displayName: dlpViolatingFilesCSV
    description: Display the violating files and the regulations each file violated in CSV format
    get:
      displayName: dlpViolatingFilesCSV
      description: Display the violating files and the regulations each file violated in CSV format
    /{contextID}:
      displayName: dlpViolatingFilesContextCSV
      description: Get violated regulations and violating files for the resource in CSV format
      uriParameters:
        contextID:
         required: true
         displayName: contextID
         description: Specified resource (moid of datacenter, cluster, folder, resource pool, or vm)
      get:
        displayName: dlpViolatingFilesContextCSV
        description: Get violated regulations and violating files for the resource in CSV format
/1.0/eventcontrol:
  displayName: eventControl
  description: eventControl Operations
  /vm/{vmID}/request:
    displayName: dataCollectionVM
    description: Enable or disable data collection on a virtual machine
    uriParameters:
      vmID:
        displayName: vmID
        description: MOID of the guest vm
        required: true
    post:
      displayName: dataCollectionVMCreate
      description: Enable or disable data collection on a virtual machine
      body:
        application/xml:
          example: |
            <perVmConfig>
              <actions>
                <action>
                  <type></type>
                  <value></value>
                </action>
              </actions>
            </perVmConfig>
          schema: dataCollectionVMCreate
  /eventcontrol-root/request:
    displayName: dataCollectionKillSwitch
    description: Data collection kill switch on/off
    post:
      displayName: dataCollectionKillSwitch
      description: Turn on/off data collection at global level
      body:
        application/xml:
          example: |
            <request>
              <actions>
                <action>
                  <type></type>
                  <value></value>
                </action>
              </actions>
            </request>
          schema: dataCollectionKillSwitch
  /config/vm/{vmID}:
    displayName: dataCollectionVMInfo
    description: Retrieve per vm configuration for data collection
    uriParameters:
      vmID:
        displayName: vmID
        description: MOID of the guest vm
        required: true
    get:
      displayName: dataCollectionVMInfoRead
      description: Retrieve per vm configuration for data collection
/3.0/ai:
  displayName: activityMonitoring
  description: Activity monitoring
  /records:
    displayName: userActivity
    description: Get aggregated user activity (action records) using parameters. Requires vShield Endpoint and NSX Endpoint configured, and Data collection enabled on 1+ vm's
    get:
      displayName: userActivityRead
      description: Get aggregated user activity
      queryParameters:
        query:
          displayName: query
          description: Name of report (resource,adg,containers,sam,vma)
          default: resource
          required: true
        interval:
          displayName: interval
          description: Relative time to current time (number followed by either m,h,d,s)
          example: 60m
          required: true
        stime:
          displayName: stime
          description: Start time for query
          default: 2012-02-28T21:00
        etime:
          displayName: etime
          description: End time for query
          default: 2012-02-29T21:00
        param:
          displayName: param
          description: Parameter to be applied to query (<param-name>:<param-type>:<comma-separated-values>:operator)
          default: src:SECURITY_GROUP:1:INCLUDE
        pagesize:
          displayName: pagesize
          description: Number of records to retrieve (recommended between 100-2000)
          default: 1000
        startindex:
          displayName: startindex
          description: Start record number for pagination
          default: 100
  /userdetails:
    displayName: userDetails
    description: Retrieve user detail records in accordance with given query parameters
    get:
      displayName: userDetailsRead
      description: Retrieve user detail records in accordance with given query parameters
      queryParameters:
        query:
          displayName: query
          description: Name of report (resource,adg,containers,sam,vma)
          required: true
          default: resource
        interval:
          displayName: interval
          description: Relative time to current time (number followed by either m,h,d,s)
          example: 60m
          required: true
        stime:
          displayName: stime
          description: Start time for query
          default: 2012-02-28T21:00
        etime:
          displayName: etime
          description: End time for query
          default: 2012-02-29T21:00
        param:
          displayName: param
          description: Parameter to be applied to query (<param-name>:<param-type>:<comma-separated-values>:operator)
          default: src:SECURITY_GROUP:1:INCLUDE
        pagesize:
          displayName: pagesize
          description: Number of records to retrieve (recommended between 100-2000)
          default: 1000
        startindex:
          displayName: startindex
          description: Start record number for pagination
          default: 100
  /user/{userID}:
    displayName: specificUserDetails
    description: Retrieve details for a specific user
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
    get:
      displayName: specificUserDetailsRead
      description: Retrieve details for a specific user
  /app:
    displayName: appDetails
    description: Retrieve app details
    get:
      displayName: appDetailsRead
      description: Retrieve app details
    /{appID}:
      displayName: specificAppDetails
      description: Retrieve details for specific app
      uriParameters:
        appID:
          required: true
          displayName: appID
          description: Specified app ID
      get:
        displayName: specificAppDetailsRead
        description: Retrieve details for specific app
  /host:
    displayName: hostDetails
    description: Host details
    get:
      displayName: hostDetailsRead
      description: Retrieve list of all discovered hosts (both by agent introspection and LDAP Sync) and their detail
    /{hostID}:
      displayName: specificHostDetails
      description: Specific host details
      uriParameters:
        hostID:
          displayName: hostID
          description: Specified host ID
          required: true
      get:
        displayName: specificHostDetailsRead
        description: Get host details
  /desktoppool:
    displayName: desktopPool
    description: Desktop pool details
    get:
      displayName: desktopPoolRead
      description: Retrieve list of all discovered desktop pools by agent introspection
    /{desktoppoolID}:
      displayName: specificDesktopPool
      description: Specific desktop pool details
      uriParameters:
        desktoppoolID:
          displayName: desktoppoolID
          description: Specified desktop pool
          required: true
      get:
        displayName: specificDesktopPoolRead
        description: Retrieve specific desktop pool details
  /vm:
    displayName: vmDetails
    description: Virtual machine details
    get:
      displayName: vmDetailsRead
      description: Retrieve list of all discovered vm's
    /{vmID}:
      displayName: specificVMDetails
      description: Specific VM details
      uriParameters:
        vmID:
          required: true
          displayName: vmID
          description: VM ID
      get:
        displayName: specificVMDetailsRead
        description: Retrieve details about a specific virtual machine
  /directorygroup:
    displayName: dirGroup
    description: LDAP directory group details
    get:
      displayName: dirGroupRead
      description: Retrieve list of all discovered (and configured) LDAP directory groups
    /{directorygroupID}:
      displayName: specificDirGroup
      description: Specific directory group details
      uriParameters:
        directorygroupID:
          displayName: directorygroupID
          description: Specified directory group
          required: true
      get:
        displayName: specificDirGroupRead
        description: Retrieve details about a specific directory group
    /user/{userID}:
      displayName: userDirGroup
      description: AD groups that a user belongs to
      uriParameters:
        userID:
          displayName: userID
          required: true
          description: User ID
      get:
        displayName: userDirGroupRead
        description: Retrieve AD groups that user belongs to
  /securitygroup:
    displayName: secgroupDetails
    description: Security group details
    get:
      displayName: secgroupDetailsRead
      description: Retrieve list of all observed security groups
    /{secgroupID}:
      displayName: specificSecgroupDetails
      description: Specific security group details
      uriParameters:
        secgroupID:
          required: true
          displayName: secgroupID
          description: Specified security group
      get:
        displayName: specificSecgroupDetailsRead
        description: Retrieve details about specific security group
/3.0/directory/updateDomain:
  displayName: domain
  description: Working with domains
  post:
    displayName: domainCreate
    description: Register or update a domain with NSX Manager
    body:
      application/xml:
        example: |
          <DirectoryDomain>
            <name></name>
            <type></type>
            <netbiosName></netbiosName>
            <username></username>
            <password></password>
          </DirectoryDomain>
        schema: domainCreate
/1.0/directory:
  displayName: domain
  description: LDAP / Domain Operations
  /updateDomain:
    displayName: domainUpdate
    description: Working with domains
    post:
      displayName: domainCreate
      description: Register or update a domain with NSX Manager
      body:
        application/xml:
            schema: domainCreate
  /listDomains:
    displayName: domainList
    description: Retrieve all agent discovered (or configured) LDAP domains
    get:
      displayName: domainListRead
      description: Retrieve all agent discovered (or configured) LDAP domains
  /deleteDomain/{ID}:
    displayName: domainDelete
    description: Delete domain
    uriParameters:
      ID:
        required: true
        displayName: ID
        description: Domain ID
    delete:
      displayName: domainDelete
      description: Delete domain
  /directory:
    displayName: ldapEventLogServer
    description: Working with LDAP servers and EventLog servers
    /updateLdapServer:
      displayName: ldapServerCreate
      description: Create LDAP server
      post:
        displayName: ldapServerCreate
        description: Create LDAP server
        body:
          application/xml:
            example: |
              <LDAPServer>
                <domainId></domainId>
                <hostName></hostName>
                <enabled></enabled>
              </LDAPServer>
            schema: ldapServerCreate
    /listLdapServersForDomain/{domainID}:
      displayName: ldapServerDomain
      description: Query LDAP servers for a domain
      uriParameters:
        domainID:
          displayName: domainID
          description: Specified domain
          required: true
      get:
        displayName: ldapServerDomainRead
        description: Query LDAP servers for a domain
    /fullSync/{domainID}:
      displayName: ldapServerSync
      description: Start LDAP full sync
      uriParameters:
        domainID:
          displayName: domainID
          description: Specified domain
          required: true
      put:
        displayName: ldapServerSync
        description: Start LDAP full sync
    /deltaSync/{domainID}:
      displayName: ldapServerDeltaSync
      description: Start LDAP delta sync
      uriParameters:
        domainID:
          displayName: domainID
          description: Specified domain
          required: true
      put:
        displayName: ldapServerDeltaSync
        description: Start LDAP delta sync
    /deleteLdapServer/{serverID}:
      displayName: ldapServerDelete
      description: Delete LDAP server
      uriParameters:
        serverID:
          required: true
          displayName: serverID
          description: Specified LDAP server
      delete:
        displayName: ldapServerDelete
        description: Delete LDAP server
    /updateEventLogServer:
      displayName: eLogServerCreate
      description: Create EventLog server
      post:
        displayName: eLogServerCreate
        description: Create EventLog server
        body:
          application/xml:
            example: |
              <EventlogServer>
                <id></id>
                <domainId></domainId>
                <hostName></hostName>
                <enabled></enabled>
              </EventlogServer>
            schema: eLogServerCreate
    /listEventLogServersForDomain/{domainID}:
      displayName: eLogServerDomainRead
      description: Query EventLog servers for a domain
      uriParameters:
        domainID:
          required: true
          displayName: domainID
          description: Specified domain
      get:
        displayName: eLogServerDomainRead
        description: Query EventLog servers for a domain
    /deleteEventLogServer/{serverID}:
      displayName: eLogServerDelete
      description: Delete EventLog server
      uriParameters:
        serverID:
          required: true
          displayName: serverID
          description: Specified EventLog server ID
      delete:
        displayName: eLogServerDelete
        description: Delete EventLog server
/1.0/identity:
  displayName: mappingLists
  description: Working with mapping lists
  /userIpMapping:
    displayName: userIpMapping
    description: Query user-to-ip mapping list from database
    get:
      displayName: userIpMappingRead
      description: Query user-to-ip mapping list from database
  /hostIpMapping:
    displayName: hostIpMapping
    description: Query host-to-ip mapping list from database
    get:
      displayName: hostIpMappingRead
      description: Query host-to-ip mapping list from database
  /ipToUserMapping:
    displayName: ipToUserMapping
    description: Query set of users associated with a given set of Ip addresses
    get:
      displayName: ipToUserMappingRead
      description: Query set of users associated with a given set of Ip addresses
  /directoryGroupsForUser/{userID}:
    displayName: userDirGroups
    description: Query set of Windows Domain Groups (AD Groups) to which the specified user belongs
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
    get:
      displayName: userDirGroupsRead
      description: Query set of Windows Domain Groups (AD Groups) to which the specified user belongs
  /staticUserMapping/{userID}/{IP}:
    displayName: staticUserMapping
    description: Create static user IP mapping
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
      IP:
        required: true
        displayName: IP
        description: IP address
    post:
      displayName: staticUserMappingCreate
      description: Create static user IP mapping
  /staticUserMappings:
    displayName: staticUserMappings
    description: Query static user IP mapping list
    get:
      displayName: staticUserMappingsRead
      description: Query static user IP mapping list
  /staticUserMappingsbyUser/{userID}:
    displayName: staticUserMappingsbyUser
    description: Query static user IP mapping for specified user
    uriParameters:
      userID:
        required: true
        displayName: userID
        description: User ID
    get:
      displayName: staticUserMappingsbyUserRead
      description: Query static user IP mapping for specified user
    delete:
      displayName: staticUserMappingsbyUserDelete
      description: Delete static user IP mapping for specified user
  /staticUserMappingsbyIP/{IP}:
    displayName: staticUserMappingsbyIP
    description: Query static user IP mapping for specified IP
    uriParameters:
      IP:
        required: true
        displayName: IP
        description: IP address
    get:
      displayName: staticUserMappingsbyIPRead
      description: Query static user IP mapping for specified IP
    delete:
      displayName: staticUserMappingsbyIPDelete
      description: Delete static user IP mapping for specified IP
/1.0/sam/syslog:
  displayName: activityMonitoringSyslog
  description: Working with Activity Monitoring syslog support
  /enable:
    displayName: syslogEnable
    description: Enable syslog support
    post:
      displayName: syslogEnable
      description: Enable syslog support
  /disable:
    displayName: syslogDisable
    description: Disable syslog support
    post:
      displayName: syslogDisable
      description: Disable syslog support
/2.0/si:
  displayName: solutionIntegration
  description: Operations for solution Integrations
  /host/{hostID}/agents:
    displayName: hostAgents
    description: Agents on a specified host
    uriParameters:
      hostID:
        required: true
        displayName: hostID
        description: Specified host
    get:
      displayName: hostAgentsRead
      description: Retrieve all agents on the host
  /agent/{agentID}:
    displayName: agentInformation
    description: Agent details (host components and appliances)
    uriParameters:
      agentID:
        required: true
        displayName: agentID
        description: Specified agent
    get:
      displayName: agentInformationRead
      description: Retrieve agent details
  /deployment/{deploymentunitID}/agents:
    displayName: deploymentAgents
    description: Agents for a specified deployment
    uriParameters:
      deploymentunitID:
        required: true
        displayName: deploymentunitID
        description: Specified deployment
    get:
      displayName: deploymentAgentsRead
      description: Retrieve all agents for the specified deployment
  /fabric/sync/conflicts:
    displayName: agentConflicts
    description: Working with conflicting agencies
    get:
      displayName: agentConflictsRead
      description: Retrieve conflicting Deployment Units and EAM Agencies, if any, and the allowed operations on them
    put:
      displayName: agentConflictsUpdate
      description: Create deployment units for conflicting EAM Agencies, delete conflicting EAM agencies, or delete deployment units for conflicting EAM agencies
      body:
        application/xml:
/2.0/services/macset/{scopeId}:
  displayName: macsetScopes
  description: Working with MAC Sets.
  uriParameters:
    scopeId:
      required: true
      displayName: scopeId
      description: Can be "globalroot-0", "universalroot-0" or datacenterId in upgrade use cases
  post:
    displayName: macsetScopesCreate
    description: Create a MACset on a specified scope
    body:
      application/xml:
        example: |
          <macset>
            <objectId></objectId>
            <type>
              <typeName></typeName>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <value></value>
          </macset>
        schema: macSetCreateUpdate
  get:
    displayName: macsetScopesRead
    description: List MACsets created on a specified scope
/2.0/services/macset/{macsetId}:
  displayName: macset
  description: Operations on an individual MACset
  uriParameters:
    macsetId:
      required: true
      displayName: macsetId
      description: Specified MACset ID (Can be retrieved by listing the MACset on a scope)
  get:
    displayName: macsetRead
    description: Retrieve details about a MACset
  put:
    displayName: macsetUpdate
    description: Modify an existing MACset
    body:
      application/xml:
        example: |
          <macset>
            <objectId></objectId>
            <type>
              <typeName></typeName>
            </type>
            <description></description>
            <name></name>
            <revision></revision>
            <objectTypeName></objectTypeName>
            <value></value>
          </macset>
        schema: macSetCreateUpdate
  delete:
    displayName: macsetDelete
    description: Delete a MACset
    queryParameters:
      force:
        required: false
        displayName: force
        description: Indicates forced or unforced delete. With forced delete, the object is deleted even if used in other places such as firewall rules, causing invalid referrals. For unforced delete, the object is deleted only if it is no used by other configurations; otherwise the delete fails
        type: boolean
/2.0/services/taskservice/job:
  displayName: taskFramework
  description: Working with filtering criteria and paging information for jobs on the task framework
  get:
    displayName: taskFrameworkCriteria
    description: Query job instances by criterion
    queryParameters:
      startIndex:
        displayName: startIndex
        description: Start index (0 by default)
        required: false
        type: integer
      pageSize:
        displayName: pageSize
        description: Page size (10 by default)
        required: false
        type: integer
      sortBy:
        displayName: sortBy
        description: Always sorted by "startTime"
        required: false
      sortOrderAscending:
        displayName: sortOrderAscending
        description: Sort in ascending order of start time (true/false)
        required: false
        type: boolean
  /{jobId}:
    displayName: taskFrameworkJobs
    description: Job instances on the task framework
    uriParameters:
      jobId:
        required: true
        displayName: jobId
        description: Specified job Id
    get:
      displayName: taskFrameworkJobsRead
      description: Retrieve all job instances for the specified job ID
/2.0/endpointsecurity/registration:
  displayName: vShield
  description: Register a vendor/solution, set network address
  post:
    displayName: vShieldVendorCreate
    description: Register a vendor
    body:
      application/xml:
        example: |
          <VendorInfo>
            <id></id>
            <title></title>
            <description></description>
          </VendorInfo>
        schema: vShieldVendorCreate
  /vendors:
    displayName: vShieldVendorsInfo
    description: Registration status of vShield vendors
    get:
      displayName: vShieldVendorsInfoRead
      description: Retrieve the list of all registered vendors
  /{vendorID}:
    displayName: vShieldSolution
    description: Antivirus solutions
    uriParameters:
      vendorID:
        displayName: vendorID
        description: VMware-assigned ID for the vendor
        required: true
    post:
      displayName: vShieldSolutionCreate
      description: Register an antivirus solution
      body:
        application/xml:
          example: |
            <SolutionInfo>
              <altitude></altitude>
              <title></title>
              <description></description>
            </SolutionInfo>
          schema: vShieldSolutionCreate
    get:
      displayName: vShieldVendorInfoRead
      description: Get vendor registration information
    delete:
      displayName: vShieldVendorDelete
      description: Unregister a vendor
    /solutions:
      displayName: vShieldSolutionsInfo
      description: Registration information for all registered solutions for a vendor
      get:
        displayName: vShieldSolutionsInfoRead
        description: Retrieve registration information for all registered solutions for a vendor
    /{altitude}:
      displayName: vShieldSolutionInfo
      description: Solution registration information
      uriParameters:
        altitude:
          displayName: altitude
          description: VMware-assigned number to uniquely identify a solution. Describes the type of solution and the order in which the solution receives events relative to other solutions on the same host
      get:
        displayName: vShieldSolutionInfoRead
        description: Get registration information for a given solution
      delete:
        displayName: vShieldSolutionDelete
        description: Unregister a solution
      /location:
        displayName: solutionIPPort
        description: IP address and port for a solution
        post:
          displayName: solutionIPPortSet
          description: Set a solution's IP address and port on the vNIC host
          body:
            application/xml:
              example: |
                <LocationInfo>
                  <ip></ip>
                  <port></port>
                </LocationInfo>
              schema: solutionIPPortSet
        delete:
          displayName: solutionIPPortDelete
          description: Unset a solution's IP address and port
      /{moid}:
        displayName: solutionActivationStatus
        description: Solution activation status, given the managed object reference of its virtual machine
        uriParameters:
          moid:
            displayName: moid
            description: managed object reference
            required: true
        get:
          displayName: solutionActivationStatusRead
          description: Get the solution activation status
/2.0/endpointsecurity/activation:
  displayName: vShieldSolutionActivation
  description: vShield solution activation
  get:
    displayName: vShieldSolutionActivationRead
    description: Retrieve activation information for all activated security vm's on the specified host
    queryParameters:
      hostId:
        required: true
        displayName: hostId
        description: Specified host ID
  /{vendorID}/{solutionID}:
    displayName: vShieldSolutionActivatedVMs
    description: Activated security virtual machines
    uriParameters:
      vendorID:
        displayName: vendorID
        description: VMware-assigned ID for the vendor
        required: true
      solutionID:
        displayName: solutionID
        description: solution ID
        required: true
    get:
      displayName: vShieldSolutionActivatedVMsRead
      description: Get a list of activated security vm's for the specified solution
  /{vendorID}/{altitude}:
    displayName: vShieldSolutionActivate
    description: Activate a registered vShield solution
    uriParameters:
      vendorID:
        displayName: vendorID
        description: VMware-assigned ID for the vendor
        required: true
      altitude:
        displayName: altitude
        description: VMware-assigned number to uniquely identify a solution. Describes the type of solution and the order in which the solution receives events relative to other solutions on the same host
    post:
      displayName: vShieldSolutionActivate
      description: Activate a solution that has been registered and located
      body:
        application/xml:
          example: |
            <ActivationInfo>
              <moid></moid>
            </ActivationInfo>
          schema: vShieldSolutionActivate
    /{moid}:
      displayName: vShieldSolutionDeactivate
      description: Deactivate a solution on a host
      uriParameters:
        moid:
          required: true
          displayName: moid
          description: Managed object reference of VM
      delete:
        displayName: vShieldSolutionDeactivate
        description: Deactivate a solution on a host
/4.0/firewall:
  displayName: dfw
  description: Distributed Firewall Operations
  /globalroot-0/config:
    displayName: dfwConfig
    description: Global Distributed Firewall Rules configuration
    get:
      displayName: dfwConfigShow
      description: Global Distributed Firewall Rules configuration, use query Parameters to filter
      queryParameters:
        ruleType:
          required: false
          displayName: ruleType
          description: ruleType can be LAYER3, LAYER2, L3REDIRECT. Rule Type is mandatory if other search parameters are sent
        source:
          required: false
          displayName: source
          description: source/destination can contain IPv4/v6 address or vm‐id
        ruleId:
          required: false
          displayName: ruleId
          description: filter by ruleId
        comment:
          required: false
          displayName: comment
          description: comment can contain any portion of the comment entered for the rules. Search is case insensitive
        name:
          required: false
          displayName: name
          description: name can contain any portion of the rulename entered for the rules. Search is case insensitive
        siProfile:
          required: false
          displayName: siProfile
          description: siProfile can contain any portion of the ServiceProfile name associated with L3redirectrule. Search is case insensitive.
        edgeId:
          required: false
          displayName: edgeId
          description: edgeId is the EdgeID, that displays rules applicable to the specified Edge
        action:
          required: false
          displayName: action
          description: Filter for specific action (allow, deny)
    put:
      displayName: dfwConfigUpdate
      description: This will update the complete firewall configuration in all sections. You will need to get the Etag value out of the GET (dfwConfigShow) first. Then pass the modified version of the whole firewall configuration in the GET body
      headers:
        if-match:
          required: true
          displayName: if-match
          description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
      body:
        application/xml:
    delete:
      displayName: dfwConfigDelete
      description: Restores default configuration, which means one defaultLayer3 section with default allow rule and one defaultLayer2Section with default allow rule
    /layer3sections:
      displayName: dfwL3Section
      description: L3 Firewall Operations on specific section specified by name (in a query Parameter)
      get:
        displayName: dfwL3SectionRead
        description: Read a specific section of the DFW config specified by name
        queryParameters:
          name:
            required: false
            displayName: name
            description: Name of the Section to read
      post:
        displayName: dfwL3SectionCreate
        description: Creates a new L3 Firewall Section with a number of rules
        body:
         application/xml:
           example: |
            <section name="" managedBy="" type="">
              <rule disabled="" logged="">
                <name></name>
                <action></action>
                <appliedToList>
                  <appliedTo>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </appliedTo>
                </appliedToList>
                <sources excluded="">
                  <source>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </source>
                </sources>
                <destinations excluded="">
                  <destination>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </destination>
                </destinations>
                <services>
                  <service>
                    <destinationPort></destinationPort>
                    <protocol></protocol>
                    <subProtocol></subProtocol>
                  </service>
                </services>
              </rule>
              <rule disabled="" logged="">
                <name></name>
                <action></action>
              </rule>
            </section>
           schema: dfwSection
      /{sectionId}:
        displayName: dfwL3SectionId
        description: L3 Firewall Operations on specific section specified by section ID
        uriParameters:
          sectionId:
            required: true
            displayName: sectionId
            description: The ID of the section beeing added, updated or deleted
        get:
          displayName: dfwL3SectionIdRead
          description: Read a specific section of the DFW config specified by Id
        put:
          displayName: dfwL3SectionIdUpdate
          description: |
            Updates a L3 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
        delete:
          displayName: dfwL3SectionIdDelete
          description: Deletes a L3 section and its content by ID
        /rules:
          displayName: dfwL3Rules
          description: Operations to add one or more L3 Rules
          post:
            displayName: dfwL3RulesAdd
            description: Add a L3 Rule
            headers:
              If-match:
                required: true
                displayName: If-match
                description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
            body:
              application/xml:
                example: |
                  <rule disabled="" logged="">
                    <name></name>
                    <action></action>
                    <notes></notes>
                    <appliedToList>
                      <appliedTo>
                        <value></value>
                        <type></type>
                      </appliedTo>
                    </appliedToList>
                    <sources excluded="">
                      <source>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </source>
                    </sources>
                    <destinations excluded="">
                      <destination>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </destination>
                    </destinations>
                    <services>
                      <service>
                        <value></value>
                      </service>
                    </services>
                  </rule>
                schema: dfwRule
          /{ruleId}:
            displayName: dfwL3Rule
            description: Operations on L3 rules in sections identified by section Id and Rule Id
            uriParameters:
              ruleId:
                required: true
                displayName: ruleId
                description: The ID of the rule beeing read, updated or deleted
            get:
              displayName: dfwL3RuleRead
              description: Read the configuration of a specific rule identified by rule Id
            put:
              displayName: dfwL3RuleUpdate
              description: |
                Updates a L3 DFW Rule. To do this you need to read it first, make your changes,
                and then update the section by supplying the Etag value received in the read in the If-Match header
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
              body:
                application/xml:
            delete:
              displayName: dfwL3RuleDelete
              description: Delete a specific rule identified by rule Id
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
      /{sectionName}:
        displayName: dfwL3SectionName
        description: L3 Firewall Update Operations on specific section specified by section Name
        put:
          displayName: dfwL3SectionNameUpdate
          description: |
            Updates a L3 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
    /layer2sections:
      displayName: dfwL2Section
      description: L2 Firewall Operations on specific section specified by name (in a query Parameter)
      get:
        displayName: dfwL2SectionRead
        description: Read a specific section of the DFW config specified by name
        queryParameters:
          name:
            required: false
            displayName: name
            description: Name of the Section to read
      post:
        displayName: dfwL2SectionCreate
        description: Creates a new L2 Firewall Section with a number of rules
        body:
         application/xml:
          schema: dfwSection
      /{sectionId}:
        displayName: dfwL2SectionId
        description: L2 Firewall Operations on specific section specified by section ID
        uriParameters:
          sectionId:
            required: true
            displayName: sectionId
            description: The ID of the section beeing added, updated or deleted
        get:
          displayName: dfwL2SectionIdRead
          description: Read a specific section of the DFW config specified by Id
        put:
          displayName: dfwL2SectionIdUpdate
          description: |
            Updates a L2 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
        delete:
          displayName: dfwL2SectionIdDelete
          description: Deletes a L2 section and its content by ID
        /rules:
          displayName: dfwL2Rules
          description: Operations to add one or more L2 Rules
          post:
            displayName: dfwL2RulesAdd
            description: Add L2 Rule
            headers:
              If-match:
                required: true
                displayName: If-match
                description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
            body:
              application/xml:
                example: |
                  <rule disabled="" logged="">
                    <name></name>
                    <action></action>
                    <notes></notes>
                    <appliedToList>
                      <appliedTo>
                        <value></value>
                        <type></type>
                      </appliedTo>
                    </appliedToList>
                    <sources excluded="">
                      <source>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </source>
                    </sources>
                    <destinations excluded="">
                      <destination>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </destination>
                    </destinations>
                    <services>
                      <service>
                        <value></value>
                      </service>
                    </services>
                  </rule>
                schema: dfwRule
          /{ruleId}:
            displayName: dfwL2Rule
            description: Operations on L2 rules in sections identified by section Id and Rule Id
            uriParameters:
              ruleId:
                required: true
                displayName: ruleId
                description: The ID of the rule beeing read, updated or deleted
            get:
              displayName: dfwL2RuleRead
              description: Read the configuration of a specific rule identified by rule Id
            put:
              displayName: dfwL2RuleUpdate
              description: |
                Updates a L2 DFW Rule. To do this you need to read it first, make your changes,
                and then update the section by supplying the Etag value received in the read in the If-Match header
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
              body:
                application/xml:
            delete:
              displayName: dfwL2RuleDelete
              description: Delete a specific rule identified by rule Id
              headers:
                If-match:
                  required: true
                  displayName: If-match
                  description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
      /{sectionName}:
        displayName: dfwL2SectionName
        description: L3 Firewall Update Operations on specific section specified by section Name
        put:
          displayName: dfwL2SectionNameUpdate
          description: |
            Updates a L2 DFW Section. To do this you need to read it first, make your changes,
            and then update the section by supplying the Etag value received in the read in the If-Match header
          headers:
            If-match:
              required: true
              displayName: If-match
              description: Needed value that you will receive  in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
    /layer3redirectsections:
      displayName: layer3RedirectSections
      description: Layer3 redirect sections and rules
      post:
        displayName: layer3RedirectSectionsCreate
        description: Add L3 redirect section
        body:
          application/xml:
            example: |
              <section>
                <name></name>
                <action></action>
                <appliedToList>
                  <appliedTo>
                    <name></name>
                    <value></value>
                    <type></type>
                    <isValid></isValid>
                  </appliedTo>
                </appliedToList>
                <sectionId></sectionId>
              </section>
            schema: layer3RedirectSectionsCreate
      /{section}:
        displayName: section
        description: Layer3 redirect section
        uriParameters:
          section:
            required: true
            displayName: section
            description: Specify section by ID or name
        get:
          displayName: sectionRead
          description: Get L3 redirect section configuration
        put:
          displayName: sectionUpdate
          description: Modify L3 Redirect section. You will need to get the Etag value out of the GET first. Then pass the modified version of the whole redirect section configuration in the GET body
          headers:
            if-match:
              required: true
              displayName: if-match
              description: Needed value that you will receive in the reponse of the read (GET) method in the Etag header
          body:
            application/xml:
              example: |
                <section id="" name="" generationNumber="" timestamp="">
                  <rule id="" disabled="" logged="">
                    <name></name>
                    <action></action>
                    <appliedToList>
                      <appliedTo>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </appliedTo>
                    </appliedToList>
                    <sectionId></sectionId>
                  </rule>
                </section>
              schema: layer3RedirectSectionUpdate
        delete:
          displayName: sectionDelete
          description: Delete specified L3 redirect section
        /rules:
          displayName: rules
          description: L3 redirect rules for specified section
          post:
            displayName: rulesCreate
            description: Add L3 redirect rule
            body:
              application/xml:
                example: |
                  <section id="" name="" generationNumber="" timestamp="">
                    <name></name>
                    <action></action>
                    <appliedToList>
                      <appliedTo>
                        <name></name>
                        <value></value>
                        <type></type>
                        <isValid></isValid>
                      </appliedTo>
                    </appliedToList>
                    <sectionId></sectionId>
                  </section>
                schema: rulesCreate
          /{ruleID}:
            displayName: rule
            description: Rule for specified section
            uriParameters:
              ruleID:
                displayName: ruleID
                required: true
                description: Specified redirect rule
            get:
              displayName: ruleRead
              description: Get L3 redirect rule
            put:
              displayName: ruleUpdate
              description: Modify L3 redirect rule. You will need Etag value from the response header of GET call. Then, pass Etag value as the if-match header in PUT call
              headers:
                if-match:
                  required: true
                  displayName: if-match
                  description: Needed value that you will receive in the reponse of the read (GET) method in the Etag header
              body:
                application/xml:
                  example: |
                    <rule id="" disabled="" logged="">
                      <name></name>
                      <action></action>
                      <appliedToList>
                        <appliedTo>
                          <name></name>
                          <value></value>
                          <type></type>
                          <isValid></isValid>
                        </appliedTo>
                      </appliedToList>
                    </rule>
                  schema: ruleUpdate
            delete:
              displayName: ruleDelete
              description: Delete specified L3 redirect rule
    /layer3redirect/profiles:
      displayName: serviceInsertionProfiles
      description: Service Insertion profiles that can be applied to layer3 redirect rules
      get:
        displayName: serviceInsertionProfilesRead
        description: Retrieve the Service Insertion profiles
  /globalroot-0/state:
    displayName: dfwUpgrade
    description: Upgrading distributed firewall
    get:
      displayName: dfwUpgradeRead
      description: Get current state of firewall functioning after NSX upgrade
    put:
      displayName: dfwUpgradeEnable
      description: Enable distributed firewall
  /globalroot-0/status:
    displayName: dfwStatus
    description: Firewall configuration status
    get:
      displayName: dfwStatusRead
      description: Get firewall configuration status
    /layer3sections/{sectionID}:
      displayName: L3SectionStatus
      description: L3 section status
      uriParameters:
        sectionID:
          required: true
          displayName: sectionID
          description: Section ID
      get:
        displayName: L3SectionStatusRead
        description: Get Layer3 status
    /layer2sections/{sectionID}:
      displayName: L2SectionStatus
      description: L2 section status
      uriParameters:
        sectionID:
          required: true
          displayName: sectionID
          description: Section ID
      get:
        displayName: L2SectionStatusRead
        description: Get Layer2 status
  /globalroot-0/drafts:
    displayName: dfwDrafts
    description: Import and export firewall configurations
    post:
      displayName: dfwDraftsCreate
      description: Save a firewall configuration
      body:
        application/xml:
          example: |
            <firewallDraft name="">
              <description></description>
              <preserve></preserve>
              <mode></mode>
              <config>
                <contextId></contextId>
                <layer3Sections>
                  <section name="" >
                    <rule id="" disabled="true|false" logged="true|false">
                      <name></name>
                      <action></action>
                      <precedence></precedence>
                    </rule>
                  </section>
                </layer3Sections>
                <layer2Sections>
                  <section name="">
                    <rule id="" disabled="true|false" logged="true|false">
                      <name></name>
                      <action></action>
                      <precedence></precedence>
                    </rule>
                  </section>
                </layer2Sections>
              </config>
            </firewallDraft>
          schema: dfwDraftsCreate
    get:
      displayName: dfwSaveConfigRead
      description: Displays the draft IDs of all saved configurations
    /{draftID}:
      displayName: dfwDraft
      description: Specified saved firewall configuration
      uriParameters:
        draftID:
          required: true
          displayName: draftID
          description: Specified draft ID (retrieved through dfwDrafts GET call)
      get:
        displayName: dfwDraftRead
        description: Get a saved firewall configuration
      put:
        displayName: dfwDraftUpdate
        description: Update a saved firewall configuration
        body:
          application/xml:
            example: |
              <firewallDraft name="">
                <description></description>
                <preserve></preserve>
                <mode></mode>
                <config>
                  <contextId></contextId>
                  <layer3Sections>
                    <section name="" >
                      <rule id="" disabled="true|false" logged="true|false">
                        <name></name>
                        <action></action>
                        <precedence></precedence>
                      </rule>
                    </section>
                  </layer3Sections>
                  <layer2Sections>
                    <section name="">
                      <rule id="" disabled="true|false" logged="true|false">
                        <name></name>
                        <action></action>
                        <precedence></precedence>
                      </rule>
                    </section>
                  </layer2Sections>
                </config>
              </firewallDraft>
            schema: dfwDraftUpdate
      delete:
        displayName: dfwDraftDelete
        description: Delete a configuration
      /action/export:
        displayName: dfwConfigExport
        description: Export a configuration
        get:
          displayName: dfwConfigExport
          description: Export a configuration
          queryParameters:
              getLatestForUniversal:
                displayName: getLatestForUniversal
                description: Set to "true" to export the lasted universal draft from a secondary NSX manager.
                type: boolean
                required: false
      /action/import:
        displayName: dfwConfigImport
        description: Import a configuration
        post:
          displayName: dfwConfigImport
          description: Import a configuration
          body:
            application/xml:
              example: |
                <firewallDraft id="" name="" timestamp="">
                  <description></description>
                  <preserve></preserve>
                  <user></user>
                  <mode></mode>
                  <config timestamp="">
                    <contextId></contextId>
                    <layer3Sections>
                      <section name="" timestamp="">
                        <rule id="" disabled="true|false" logged="true|false">
                          <name></name>
                          <action></action>
                          <precedence></precedence>
                        </rule>
                      </section>
                    </layer3Sections>
                    <layer2Sections>
                      <section name="" timestamp="">
                        <rule id="" disabled="true|false" logged="true|false">
                          <name></name>
                          <action></action>
                          <precedence></precedence>
                        </rule>
                      </section>
                    </layer2Sections>
                    <generationNumber></generationNumber>
                  </config>
                </firewallDraft>
              schema: dfwConfigImport
  /stats/eventthresholds:
    displayName: dfwThresholds
    description: Memory and CPU thresholds for firewall
    get:
      displayName: dfwThresholdsRead
      description: Retrieve memory, CPU, and CPS thresholds for firewall
    put:
      displayName: dfwThresholdsUpdate
      description: Configure thresholds
      body:
        application/xml:
          example: |
            <eventThresholds>
              <cpu>
                <percentValue></percentValue>
              </cpu>
              <memory>
                <percentValue></percentValue>
              </memory>
              <connectionsPerSecond>
                <value></value>
              </connectionsPerSecond>
            </eventThresholds>
          schema: dfwThresholdsUpdate
  /config/globalconfiguration:
    displayName: dfwPerformance
    description: Tuning firewall performance
    get:
      displayName: dfwPerformanceRead
      description: Query RuleOptimize and TCPStrict flags
    put:
      displayName: dfwPerformanceUpdate
      description: Set RuleOptimize and TCPStrict flags in body to improve performance
      body:
        application/xml:
          example: |
            <globalConfiguration>
              <layer3RuleOptimize></layer3RuleOptimize>
              <layer2RuleOptimize></layer2RuleOptimize>
              <tcpStrictOption></tcpStrictOption>
            </globalConfiguration>
          schema: dfwPerformanceUpdate
  /forceSync/{ID}:
    displayName: dfwSync
    description: Synchronize hosts and clusters with the last good configuration in NSX Mgr database
    uriParameters:
      ID:
        required: true
        displayName: ID
        description: Specified host or cluster to synchronize
    post:
      displayName: dfwSync
      description: Force sync host/cluster
  /{domainID}/enable/{truefalse}:
    displayName: dfwEnableDisableAPI
    description: Enable or disable firewall components on a cluster
    uriParameters:
      domainID:
        required: true
        displayName: domainID
        description: Specified cluster
      truefalse:
        required: true
        displayName: truefalse
        description: Set parameter to true/false to enable/disable
    post:
      displayName: dfwEnableDisableAPI
      description: Enable or disable firewall components on a cluster
  /{contextId}/config/ipfix:
    displayName: dfwIPFix
    description: Export specific flows directly from firewall to a flow collector
    uriParameters:
      contextId:
        displayName: contextId
        description: Specified context
    get:
      displayName: dfwIPFixRead
      description: Query IPFix configuration
    put:
      displayName: dfwIPFixUpdate
      description: Configure IPFix
      body:
        application/xml:
          example: |
            <ipfixConfiguration>
              <contextId></contextId>
              <ipfixEnabled></ipfixEnabled>
              <observationDomainId></observationDomainId>
              <flowTimeout></flowTimeout>
              <collector>
                <ip></ip>
                <port></port>
              </collector>
            </ipfixConfiguration>
          schema: dfwIPFixUpdate
    delete:
      displayName: dfwIPFixDelete
      description: Deleting IPFix configuration resets the config to default values
/4.0/services/spoofguard/policies:
  displayName: spoofGuardPolicies
  description: SpoofGuard policies
  post:
    displayName: spoofGuardPoliciesCreate
    description: Create a SpoofGuard policy to specify the operation mode for networks.
    body:
      application/xml:
        example: |
          <spoofguardPolicy>
            <name></name>
            <description></description>
            <operationMode></operationMode>
            <enforcementPoint>
              <id></id>
              <name></name>
              <type></type>
            </enforcementPoint>
            <allowLocalIPs></allowLocalIPs>
          </spoofguardPolicy>
        schema: spoofGuardPoliciesCreate
  get:
    displayName: spoofGuardPoliciesRead
    description: Retrieve all SpoofGuard policies
  /{policyID}:
    displayName: spoofGuardPolicy
    description: Specified policy
    post:
      displayName: spoofGuardPolicyApprove
      description: Use query parameters to perform operations on a policy
      queryParameters:
        action:
          required: true
          displayName: action
          description: set to "approve" along with specified IP addresses in body to approve them, or set to "publish" to publish the approved IP addresses
      body:
        application/xml:
          example: |
            <spoofguardList>
              <spoofguard>
                <id></id>
                <vnicUuid></vnicUuid>
                <approvedIpAddress>
                  <ipAddress></ipAddress>
                </approvedIpAddress>
                <approvedMacAddress></approvedMacAddress>
                <approvedBy></approvedBy>
                <approvedOn></approvedOn>
                <publishedIpAddress>
                  <ipAddress></ipAddress>
                </publishedIpAddress>
                <publishedMacAddress></publishedMacAddress>
                <publishedBy></publishedBy>
                <publishedOn></publishedOn>
              </spoofguard>
            </spoofguardList>
          schema: spoofGuardPolicyApprove
    get:
      displayName: spoofGuardPolicyRead
      description: Retrieve policy information, or use the query parameters to perform operations
      queryParameters:
        list:
          displayName: list
          description: Use to retrieve IP addresses for specified state (ACTIVE|INACTIVE|PUBLISHED|UNPUBLISHED|REVIEW_PENDING|DUPLICATE)
    put:
      displayName: spoofGuardPolicyUpdate
      description: Modify SpoofGuard policy
      body:
        application/xml:
          example: |
            <spoofguardPolicy>
              <policyId></policyId>
              <name></name>
              <description></description>
              <operationMode></operationMode>
              <enforcementPoint>
                <id></id>
                <name></name>
                <type></type>
              </enforcementPoint>
              <allowLocalIPs></allowLocalIPs>
            </spoofguardPolicy>
          schema: spoofGuardPolicyUpdate
    delete:
      displayName: spoofGuardPolicyDelete
      description: Delete a policy
/2.1/app/flow:
  displayName: flowMonitoring
  description: Operations on flowdata
  /flowstats:
    displayName: flowStats
    description: Retrieve flow statistics for a datacenter, port group, VM, or vNIC
    get:
      displayName: flowStatsRead
      description: Retrieve flow statistics for a datacenter, port group, VM, or vNIC
      queryParameters:
        contextId:
          displayName: contextId
          description: vc-moref-id of the datacenter, portgroup, vm, or UUID of the vNIC for which traffic flow is to be retrieved
        flowType:
          displayName: flowType
          description: Type of flow to be retrieved (TCP_UDP|LAYER2|LAYER3)
        startTime:
          displayName: startTime
          description: Flows with start time greater than specified time are retrieved
        endTime:
          displayName: endTime
          description: Flows with start time lower than specified time are retrieved
        startIndex:
          type: integer
          displayName: startIndex
          description: (optional) Specifies starting point for retrieval. If not specified, start from the beginning by default
          default: 0
        pageSize:
          type: integer
          displayName: pageSize
          description: (optional) Limit the max number of entries returned. Valid range is 1-1024
          default: 256
    /info:
      displayName: flowStatsInfo
      description: Flow statistics info
      get:
        displayName: flowStatsInfoRead
        description: Retrieve flow statistics info
  /config:
    displayName: flowConfig
    description: Configure flow Monitoring
    get:
      displayName: flowConfigRead
      description: Retrieve flow details
    put:
      displayName: flowsConfigCreate
      description: Update specified flows
      body:
        application/xml:
          example: |
            <FlowConfiguration>
              <collectFlows></collectFlows>
              <ignoreBlockedFlows></ignoreBlockedFlows>
              <ignoreLayer2Flows></ignoreLayer2Flows>
              <sourceIPs></sourceIPs>
              <sourceContainer>
                <name></name>
                <id></id>
                <type></type>
              </sourceContainer>
              <destinationIPs></destinationIPs>
              <destinationContainer>
                <name></name>
                <id></id>
                <type></type>
              </destinationContainer>
              <destinationPorts></destinationPorts>
              <service>
                <name></name>
                <id></id>
              </service>
            </FlowConfiguration>
          schema: flowsExcludeCreate
  /{contextId}:
    displayName: flowContext
    description: Flow configuration by contextId
    delete:
      displayName: flowContextDelete
      description: Delete flow records for context by contextId
/2.1/app/excludelist:
  displayName: dfwExclusion
  description: Exclude VM's from firewall protection
  get:
    displayName: dfwExclusionRead
    description: Retrieve the set of vm's in the exclusion list
  /{memberID}:
    displayName: dfwExcludeMember
    description: Exclude VM's from firewall protection
    uriParameters:
      memberID:
        displayName: memberID
        description: vc-moref-id of a virtual machine
    put:
      displayName: dfwExclusionUpdate
      description: Add a vm to the exclusion list
    delete:
      displayName: dfwExclusionDelete
      description: Delete a vm from exclusion list
/4.0/edges:
  displayName: nsxEdges
  description: Installed NSX Edges in your inventory
  post:
    displayName: nsxEdgesCreate
    description: Install NSX Edge services gateway or logical router, depending on request body
    queryParameters:
        isUniversal:
          displayName: isUniversal
          description: Set to "true" when creating a universal logical router. Note the <type> in the request body must be "DISTRIBUTED_ROUTER"
          type: boolean
          required: false
    body:
      application/xml:
        example: |
          <edge>
            <datacenterMoid></datacenterMoid>
            <name></name>
            <description></description>
            <tenant></tenant>
            <fqdn></fqdn>
            <vseLogLevel></vseLogLevel>
            <enableAesni></enableAesni>
            <enableFips></enableFips>
            <appliances>
              <applianceSize></applianceSize>
              <enableCoreDump></enableCoreDump>
              <appliance>
                <resourcePoolId></resourcePoolId>
                <datastoreId></datastoreId>
                <hostId></hostId>
                <vmFolderId></vmFolderId>
                <customField>
                  <key></key>
                  <value></value>
                </customField>
                <cpuReservation>
                  <limit></limit>
                  <reservation></reservation>
                  <shares></shares>
                </cpuReservation>
                <memoryReservation>
                  <limit></limit>
                  <reservation></reservation>
                  <shares></shares>
                </memoryReservation>
              </appliance>
            </appliances>
            <vnics>
              <vnic>
                <index></index>
                <name></name>
                <type></type>
                <portgroupId></portgroupId>
                <addressGroups>
                  <addressGroup>
                    <primaryAddress></primaryAddress>
                    <secondaryAddresses>
                      <ipAddress></ipAddress>
                    </secondaryAddresses>
                    <subnetMask></subnetMask>
                  </addressGroup>
                </addressGroups>
                <macAddress>
                  <edgeVmHaIndex></edgeVmHaIndex>
                  <value></value>
                </macAddress>
                <fenceParameter>
                  <key></key>
                  <value></value>
                </fenceParameter>
                <mtu></mtu>
                <enableProxyArp></enableProxyArp>
                <enableSendRedirects></enableSendRedirects>
                <isConnected></isConnected>
                <inShapingPolicy>
                  <averageBandwidth></averageBandwidth>
                  <peakBandwidth></peakBandwidth>
                  <burstSize></burstSize>
                  <enabled></enabled>
                  <inherited></inherited>
                </inShapingPolicy>
                <outShapingPolicy>
                  <averageBandwidth></averageBandwidth>
                  <peakBandwidth></peakBandwidth>
                  <burstSize></burstSize>
                  <enabled></enabled>
                  <inherited></inherited>
                </outShapingPolicy>
              </vnic>
            </vnics>
            <cliSettings>
              <userName></userName>
              <password></password>
              <remoteAccess></remoteAccess>
            </cliSettings>
            <autoConfiguration>
              <enabled></enabled>
              <rulePriority></rulePriority>
            </autoConfiguration>
            <dnsClient>
              <primaryDns></primaryDns>
              <secondaryDns></secondaryDns>
              <domainName></domainName>
            </dnsClient>
            <queryDaemon>
              <enabled></enabled>
              <port></port>
            </queryDaemon>
          </edge>
        schema: nsxEdgesCreate
  get:
    displayName: nsxEdgesRead
    description: Retrieve a list of NSX Edges in your inventory or use the query parameters to filter results by datacenter or port group
    queryParameters:
      datacenter:
        displayName: datacenter
        description: Retrieve Edges by datacenter MoId
      tenant:
        displayName: tenant
        description: Retrieve Edges on specified tenant (by tenant ID)
      pg:
        displayName: pg
        description: Retrieve Edges with one interface on specified port group (by port group MoId)
  /{edgeId}:
    displayName: nsxEdge
    description: NSX Edge operations
    uriParameters:
      edgeId:
        required: true
        displayName: edgeId
        description: Specified Edge ID
    post:
      displayName: nsxEdgeCreate
      description: Manage NSX Edge
      queryParameters:
        action:
          displayName: action
          required: true
          description: Options include "forcesync" (resync Edge vm's), "redeploy" ()
    get:
      displayName: nsxEdgeRead
      description: Retrieve Edge details
      queryParameters:
        isUniversal:
          displayName: isUniversal
          description: Filter read of Edges to display only universal logical routers
          type: boolean
          required: false
    put:
      displayName: nsxEdgeUpdate
      description: Update the NSX Edge configuration
      body:
        application/xml:
          example: |
            <edge>
              <id></id>
              <description></description>
              <datacenterMoid></datacenterMoid>
              <name></name>
              <fqdn></fqdn>
              <enableAesni></enableAesni>
              <enableFips></enableFips>
              <vseLogLevel></vseLogLevel>
              <vnics>
                <vnic>
                  <index></index>
                  <name></name>
                  <type></type>
                  <portgroupId></portgroupId>
                  <addressGroups>
                    <addressGroup>
                      <primaryAddress></primaryAddress>
                      <secondaryAddresses>
                        <ipAddress></ipAddress>
                      </secondaryAddresses>
                      <subnetMask></subnetMask>
                    </addressGroup>
                  </addressGroups>
                  <mtu></mtu>
                  <enableProxyArp></enableProxyArp>
                  <enableSendRedirects></enableSendRedirects>
                  <isConnected></isConnected>
                  <inShapingPolicy>
                    <averageBandwidth></averageBandwidth>
                    <peakBandwidth></peakBandwidth>
                    <burstSize></burstSize>
                    <enabled></enabled>
                    <inherited></inherited>
                  </inShapingPolicy>
                  <outShapingPolicy>
                    <averageBandwidth></averageBandwidth>
                    <peakBandwidth></peakBandwidth>
                    <burstSize></burstSize>
                    <enabled></enabled>
                    <inherited></inherited>
                  </outShapingPolicy>
                </vnic>
              </vnics>
              <appliances>
                <applianceSize></applianceSize>
                <appliance>
                  <resourcePoolId></resourcePoolId>
                  <datastoreId></datastoreId>
                  <vmFolderId></vmFolderId>
                </appliance>
              </appliances>
              <cliSettings>
                <remoteAccess></remoteAccess>
                <userName></userName>
              </cliSettings>
              <features>
                <firewall>
                  <defaultPolicy>
                    <action></action>
                    <loggingEnabled></loggingEnabled>
                  </defaultPolicy>
                  <rules>
                    <rule>
                      <id></id>
                      <ruleTag></ruleTag>
                      <name></name>
                      <ruleType></ruleType>
                      <source>
                        <exclude></exclude>
                        <groupingObjectId></groupingObjectId>
                      </source>
                      <destination></destination>
                      <application>
                        <applicationId></applicationId>
                      </application>
                      <action></action>
                      <enabled></enabled>
                      <loggingEnabled></loggingEnabled>
                      <matchTranslated></matchTranslated>
                    </rule>
                  </rules>
                </firewall>
                <routing>
                  <staticRouting>
                    <defaultRoute>
                      <vnic></vnic>
                      <gatewayAddress></gatewayAddress>
                      <description></description>
                    </defaultRoute>
                    <staticRoutes>
                      <route>
                        <vnic></vnic>
                        <network></network>
                        <nextHop></nextHop>
                        <type></type>
                      </route>
                    </staticRoutes>
                  </staticRouting>
                  <ospf>
                    <enabled></enabled>
                  </ospf>
                </routing>
                <highAvailability>
                  <enabled></enabled>
                  <declareDeadTime></declareDeadTime>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                </highAvailability>
                <syslog>
                  <protocol></protocol>
                  <serverAddresses>
                    <ipAddress></ipAddress>
                  </serverAddresses>
                </syslog>
                <ipsec>
                  <enabled></enabled>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                  <sites>
                    <site>
                      <enabled></enabled>
                      <name></name>
                      <localId></localId>
                      <localIp></localIp>
                      <peerId></peerId>
                      <encryptionAlgorithm></encryptionAlgorithm>
                      <mtu></mtu>
                      <enablePfs></enablePfs>
                      <dhGroup></dhGroup>
                      <localSubnets>
                        <subnet></subnet>
                      </localSubnets>
                      <peerSubnets>
                        <subnet></subnet>
                      </peerSubnets>
                      <psk></psk>
                      <authenticationMode></authenticationMode>
                    </site>
                  </sites>
                  <global>
                    <caCertificates/>
                    <crlCertificates/>
                  </global>
                </ipsec>
                <dhcp>
                  <enabled></enabled>
                  <staticBindings>
                    <staticBinding>
                      <autoConfigureDNS></autoConfigureDNS>
                      <bindingId></bindingId>
                      <vmId></vmId>
                      <vnicId></vnicId>
                      <hostname></hostname>
                      <ipAddress></ipAddress>
                      <defaultGateway></defaultGateway>
                      <leaseTime></leaseTime>
                    </staticBinding>
                  </staticBindings>
                  <ipPools>
                    <ipPool>
                      <autoConfigureDNS></autoConfigureDNS>
                      <poolId></poolId>
                      <ipRange></ipRange>
                      <defaultGateway></defaultGateway>
                      <leaseTime></leaseTime>
                    </ipPool>
                  </ipPools>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                </dhcp>
                <nat>
                  <natRules>
                    <natRule>
                      <ruleId></ruleId>
                      <ruleTag></ruleTag>
                      <ruleType></ruleType>
                      <action></action>
                      <vnic></vnic>
                      <originalAddress></originalAddress>
                      <translatedAddress></translatedAddress>
                      <loggingEnabled></loggingEnabled>
                      <enabled></enabled>
                      <protocol></protocol>
                      <originalPort></originalPort>
                      <translatedPort></translatedPort>
                    </natRule>
                  </natRules>
                </nat>
              </features>
              <autoConfiguration>
                <enabled></enabled>
                <rulePriority></rulePriority>
              </autoConfiguration>
            </edge>
          schema: nsxEdgeUpdate
    delete:
      displayName: nsxEdgeDelete
      description: Delete specified Edge from database. Associated appliances are also deleted
    /dnsclient:
      displayName: dns
      description: DNS settings (primary/secondary and search domain) of an Edge
      put:
        displayName: nsxEdgeDnsUpdate
        description: Update Edge DNS settings
        body:
          application/xml:
            example: |
              <dnsClient>
                <primaryDns></primaryDns>
                <secondaryDns></secondaryDns>
                <domainName></domainName>
              </dnsClient>
            schema: nsxEdgeDnsUpdate
    /aesni:
      displayName: aesni
      description: AESNI Setting
      post:
        displayName: aesniCreate
        description: Modify AESNI setting
        queryParameters:
          enable:
            type: boolean
            required: true
            displayName: enable
    /coredump:
      displayName: coreDump
      description: Enabling core-dump feature results in deployment of inbuilt extra disk to save core-dump files. 1GB for compact edge and 8GB for other types. Disabling detaches the disk
      post:
        displayName: coreDumpCreate
        description: Modify core dump setting
    /fips:
      displayName: fips
      description: FIPs setting
      post:
        displayName: fipsCreate
        description: Modify FIPs setting
        queryParameters:
          enable:
            type: boolean
            required: true
            displayName: enable
    /logging:
      displayName: logging
      description: Log setting
      post:
        displayName: loggingCreate
        description: Modify log setting
        queryParameters:
          level:
            displayName: level
    /summary:
      displayName: summary
      description: Edge summary
      get:
        displayName: summaryRead
        description: Retrieve details about the specified Edge
    /status:
      displayName: status
      description: Edge status
      get:
        displayName: statusRead
        description: Retrieve the status of the specified Edge
        queryParameters:
          getlatest:
            type: boolean
            displayName: getlatest
            description: true = fetch the status live from NSX Edge, false = fetch the latest available status from database
          detailed:
            type: boolean
            displayName: detailed
            description: true = fetch detailed status per feature, false = aggregated summary of status per feature
          preRulesStatus:
            type: boolean
            displayName: preRulesStatus
            description: true = fetch detailed output for pre rules in addition to the regular output
    /techsupportlogs:
      displayName: techSupportLogs
      description: Tech support logs for specified Edge
      get:
        displayName: techSupportLogsRead
        description: Retrieve the tech support logs for Edge
    /clisettings:
      displayName: cliSettings
      description: Manage CLI credentials and access
      put:
        displayName: cliSettingsUpdate
        description: Modify CLI credentials and enable/disable SSH for Edge
        body:
          application/xml:
            example: |
              <cliSettings>
                <userName></userName>
                <password></password>
                <remoteAccess></remoteAccess>
                <passwordExpiry></passwordExpiry>
                <sshLoginBannerText></sshLoginBannerText>
              </cliSettings>
            schema: cliSettingsUpdate
    /cliremoteaccess:
      displayName: cliRemote
      description: Enable or disable SSH on the Edge
      post:
        displayName: cliRemoteCreate
        description: Change CLI remote access
        queryParameters:
          enable:
            type: boolean
            required: true
            displayName: enable
    /firewall/config:
      displayName: nsxEdgeFirewallConfig
      description: Configure firewall for an Edge
      get:
        displayName: nsxEdgeFirewallConfigRead
        description: Read the firewall configuration
      put:
        displayName: nsxEdgeFirewallConfigUpdate
        description: Configure firewall for an Edge
        body:
          application/xml:
            example: |
              <firewall>
                <defaultPolicy>
                  <action></action>
                  <loggingEnabled></loggingEnabled>
                </defaultPolicy>
                <globalConfig>
                  <tcpPickOngoingConnections></tcpPickOngoingConnections>
                  <tcpAllowOutOfWindowPackets></tcpAllowOutOfWindowPackets>
                  <tcpSendResetForClosedVsePorts></tcpSendResetForClosedVsePorts>
                  <dropInvalidTraffic></dropInvalidTraffic>
                  <logInvalidTraffic></logInvalidTraffic>
                  <tcpTimeoutOpen></tcpTimeoutOpen>
                  <tcpTimeoutEstablished></tcpTimeoutEstablished>
                  <tcpTimeoutClose></tcpTimeoutClose>
                  <udpTimeout></udpTimeout>
                  <icmpTimeout></icmpTimeout>
                  <icmp6Timeout></icmp6Timeout>
                  <ipGenericTimeout></ipGenericTimeout>
                </globalConfig>
                <rules>
                  <rule>
                    <ruleTag></ruleTag>
                    <name></name>
                    <source>
                      <vnicGroupId></vnicGroupId>
                      <groupingObjectId></groupingObjectId>
                      <ipAddress></ipAddress>
                    </source>
                    <destination>
                      <groupingObjectId></groupingObjectId>
                      <vnicGroupId></vnicGroupId>
                      <groupingObjectId></groupingObjectId>
                      <ipAddress></ipAddress>
                    </destination>
                    <application>
                      <applicationId></applicationId>
                      <service>
                        <protocol></protocol>
                        <port></port>
                        <sourcePort></sourcePort>
                      </service>
                    </application>
                    <matchTranslated></matchTranslated>
                    <direction></direction>
                    <action></action>
                    <enabled></enabled>
                    <loggingEnabled></loggingEnabled>
                    <description></description>
                  </rule>
                </rules>
              </firewall>
            schema: nsxEdgeFirewallConfigUpdate
      delete:
        displayName: nsxEdgeFirewallConfigDelete
        description: Delete firewall configuration
      /rules:
        displayName: firewallRules
        description: Firewall rules
        post:
          displayName: firewallRulesCreate
          description: Add one or more rules. You can add a rule above a specific rule using the query parameter, indicating the desired ruleID.
          queryParameters:
            aboveRuleId:
              displayName: aboveRuleId
              description: rule Id
          body:
            application/xml:
              example: |
                <firewall>
                  <defaultPolicy>
                    <action></action>
                    <loggingEnabled></loggingEnabled>
                  </defaultPolicy>
                  <globalConfig>
                    <tcpPickOngoingConnections></tcpPickOngoingConnections>
                    <tcpAllowOutOfWindowPackets></tcpAllowOutOfWindowPackets>
                    <tcpSendResetForClosedVsePorts></tcpSendResetForClosedVsePorts>
                    <dropInvalidTraffic></dropInvalidTraffic>
                    <logInvalidTraffic></logInvalidTraffic>
                    <tcpTimeoutOpen></tcpTimeoutOpen>
                    <tcpTimeoutEstablished></tcpTimeoutEstablished>
                    <tcpTimeoutClose></tcpTimeoutClose>
                    <udpTimeout></udpTimeout>
                    <icmpTimeout></icmpTimeout>
                    <icmp6Timeout></icmp6Timeout>
                    <ipGenericTimeout></ipGenericTimeout>
                  </globalConfig>
                  <rules>
                    <rule>
                      <ruleTag></ruleTag>
                      <name></name>
                      <source>
                        <vnicGroupId></vnicGroupId>
                        <groupingObjectId></groupingObjectId>
                        <ipAddress></ipAddress>
                      </source>
                      <destination>
                        <groupingObjectId></groupingObjectId>
                        <vnicGroupId></vnicGroupId>
                        <groupingObjectId></groupingObjectId>
                        <ipAddress></ipAddress>
                      </destination>
                      <application>
                        <applicationId></applicationId>
                        <service>
                          <protocol></protocol>
                          <port></port>
                          <sourcePort></sourcePort>
                        </service>
                      </application>
                      <matchTranslated></matchTranslated>
                      <direction></direction>
                      <action></action>
                      <enabled></enabled>
                      <loggingEnabled></loggingEnabled>
                      <description></description>
                    </rule>
                  </rules>
                </firewall>
              schema: firewallRulesCreate
        /{ruleId}:
          displayName: firewallRule
          description: Specific firewall rule
          uriParameters:
            ruleId:
              required: true
              displayName: ruleId
              description: Rule ID
          get:
            displayName: firewallRuleRead
            description: Retrieve specific rule
          put:
            displayName: firewallRuleUpdate
            description: Modify a specific firewall rule
            body:
              application/xml:
                example: |
                  <rule>
                    <ruleTag></ruleTag>
                    <name></name>
                    <source>
                      <vnicGroupId></vnicGroupId>
                      <groupingObjectId></groupingObjectId>
                    </source>
                    <destination>
                      <groupingObjectId></groupingObjectId>
                      <vnicGroupId></vnicGroupId>
                    </destination>
                    <application>
                      <applicationId></applicationId>
                    </application>
                    <matchTranslated></matchTranslated>
                    <direction></direction>
                    <action></action>
                    <enabled></enabled>
                    <loggingEnabled></loggingEnabled>
                    <description></description>
                  </rule>
                schema: firewallRuleUpdate
          delete:
            displayName: firewallRuleDelete
            description: Delete firewall rule
      /global:
        displayName: globalFirewallConfig
        description: NSX Edge global firewall configuration
        get:
          displayName: globalFirewallConfigRead
          description: Retrieve the firewall default policy for an Edge
        put:
          displayName: globalFirewallConfigUpdate
          description: Configure firewall global config for an Edge
          body:
            application/xml:
              example:
                <globalConfig>
                  <tcpPickOngoingConnections></tcpPickOngoingConnections>
                  <tcpAllowOutOfWindowPackets></tcpAllowOutOfWindowPackets>
                  <tcpSendResetForClosedVsePorts></tcpSendResetForClosedVsePorts>
                  <dropInvalidTraffic></dropInvalidTraffic>
                  <logInvalidTraffic></logInvalidTraffic>
                  <tcpTimeoutOpen></tcpTimeoutOpen>
                  <tcpTimeoutEstablished></tcpTimeoutEstablished>
                  <tcpTimeoutClose></tcpTimeoutClose>
                  <udpTimeout></udpTimeout>
                  <icmpTimeout></icmpTimeout>
                  <icmp6Timeout></icmp6Timeout>
                  <ipGenericTimeout></ipGenericTimeout>
                </globalConfig>
              schema: globalFirewallConfigUpdate
      /defaultpolicy:
        displayName: defaultFirewallPolicy
        description: Default firewall policy for an Edge
        get:
          displayName: defaultFirewallPolicyRead
          description: Retrieve default firewall policy
        put:
          displayName: defaultFirewallPolicyUpdate
          description: Configure default firewall policy
          body:
            application/xml:
              example: |
                <firewallDefaultPolicy>
                  <action></action>
                  <loggingEnabled></loggingEnabled>
                </firewallDefaultPolicy>
              schema: defaultFirewallPolicyUpdate
    /firewall/statistics/firewall:
      displayName: firewallStatistics
      description: Edge firewall statistics
      get:
        displayName: firewallStatisticsRead
        description: Retrieve number of ongoing connections for the firewall config
        queryParameters:
          interval:
            displayName: interval
            description: 60 min by default, can be given as 1 -60 min, oneDay | oneWeek | oneMonth | oneYear
    /firewall/statistics/{ruleId}:
      displayName: firewallRuleStatistics
      description: Statistics for firewall rules
      uriParameters:
        ruleId:
          displayName: ruleId
          required: true
          description: Specified rule
      get:
        displayName: firewallRuleStatisticsRead
        description: Retrieve stats for firewall rule
    /nat/config:
      displayName: edgeNat
      description: SNAT and DNAT rules for NSX Edge
      put:
        displayName: edgeNatConfig
        description: Configure SNAT and DNAT rules for an Edge
        body:
          application/xml:
            example: |
              <nat>
                <natRules>
                  <natRule>
                    <ruleTag></ruleTag>
                    <action></action>
                    <vnic></vnic>
                    <originalAddress></originalAddress>
                    <translatedAddress></translatedAddress>
                    <loggingEnabled></loggingEnabled>
                    <enabled></enabled>
                    <description></description>
                    <protocol></protocol>
                    <translatedPort></translatedPort>
                    <originalPort></originalPort>
                  </natRule>
                </natRules>
              </nat>
            schema: edgeNatConfig
      get:
        displayName: edgeNatRead
        description: Query SNAT and DNAT rules for an Edge
      delete:
        displayName: edgeNatDelete
        description: Delete all NAT rules for an Edge
      /rules:
        displayName: edgeNatRules
        description: NAT rules
        post:
          displayName: edgeNatRulesCreate
          description: Add a NAT rule above a specific rule in the NAT rules table (using aboveRuleId) or append NAT rules to the bottom
          queryParameters:
            aboveRuleId:
              displayName: aboveRuleId
              description: Specified rule ID. If the ID does not exist, Edge Manager displays an error
          body:
            application/xml:
              example: |
                <natRules>
                  <natRule>
                    <action></action>
                    <vnic></vnic>
                    <originalAddress></originalAddress>
                    <translatedAddress></translatedAddress>
                    <loggingEnabled></loggingEnabled>
                    <enabled></enabled>
                    <description></description>
                    <protocol></protocol>
                    <translatedPort></translatedPort>
                    <originalPort></originalPort>
                  </natRule>
                </natRules>
              schema: edgeNatRulesCreate
        /{ruleID}:
          displayName: edgeNatRule
          description: Specified NAT rule
          uriParameters:
            ruleID:
              required: true
              displayName: ruleID
              description: Specified rule ID
          put:
            displayName: edgeNatRuleUpdate
            description: Modify a NAT rule
            body:
              application/xml:
                example: |
                  <natRule>
                    <action></action>
                    <vnic></vnic>
                    <originalAddress></originalAddress>
                    <translatedAddress></translatedAddress>
                    <loggingEnabled></loggingEnabled>
                    <enabled></enabled>
                    <description></description>
                    <protocol></protocol>
                    <translatedPort></translatedPort>
                    <originalPort></originalPort>
                  </natRule>
                schema: edgeNatRuleUpdate
          delete:
            displayName: edgeNatRuleUpdate
            description: Delete a NAT rule
    /routing/config:
      displayName: routingConfig
      description: Static and dynamic routing for each NSX Edge
      get:
        displayName: routingConfigRead
        description: Retrieve routes
      put:
        displayName: routingConfigUpdate
        description: Configure globalConfig, staticRouting, OSPG, BGP, and IS-IS
        body:
          application/xml:
            example: |
              <routing>
                <routingGlobalConfig>
                  <ecmp></ecmp>
                  <routerId></routerId>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                  <ipPrefixes>
                    <ipPrefix>
                      <name></name>
                      <ipAddress></ipAddress>
                    </ipPrefix>
                  </ipPrefixes>
                </routingGlobalConfig>
                <staticRouting>
                  <staticRoutes>
                    <route>
                      <description></description>
                      <vnic></vnic>
                      <network></network>
                      <nextHop></nextHop>
                      <mtu></mtu>
                    </route>
                  </staticRoutes>
                  <defaultRoute>
                    <description></description>
                    <vnic></vnic>
                    <gatewayAddress></gatewayAddress>
                    <mtu></mtu>
                  </defaultRoute>
                </staticRouting>
                <ospf>
                  <enabled></enabled>
                  <defaultOriginate></defaultOriginate>
                  <gracefulRestart></gracefulRestart>
                  <ospfAreas>
                    <ospfArea>
                      <areaId></areaId>
                      <type></type>
                      <authentication>
                        <type></type>
                        <value></value>
                      </authentication>
                    </ospfArea>
                  </ospfAreas>
                  <ospfInterfaces>
                    <ospfInterface>
                      <vnic></vnic>
                      <areaId></areaId>
                      <helloInterval></helloInterval>
                      <deadInterval></deadInterval>
                      <priority></priority>
                      <cost></cost>
                    </ospfInterface>
                  </ospfInterfaces>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </ospf>
                <isis>
                  <enabled></enabled>
                  <systemId></systemId>
                  <areaIds>
                    <areaId></areaId>
                  </areaIds>
                  <isType></isType>
                  <domainPassword></domainPassword>
                  <areaPassword></areaPassword>
                  <isisInterfaces>
                    <isisInterface>
                      <vnic></vnic>
                      <meshGroup></meshGroup>
                      <helloInterval></helloInterval>
                      <helloMultiplier></helloMultiplier>
                      <lspInterval></lspInterval>
                      <metric></metric>
                      <priority></priority>
                      <circuitType></circuitType>
                      <password></password>
                    </isisInterface>
                  </isisInterfaces>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </isis>
                <bgp>
                  <enabled></enabled>
                  <localAS></localAS>
                  <bgpNeighbours>
                    <bgpNeighbour>
                      <ipAddress></ipAddress>
                      <remoteAS></remoteAS>
                      <weight></weight>
                      <holdDownTimer></holdDownTimer>
                      <keepAliveTimer></keepAliveTimer>
                      <password></password>
                      <bgpFilters>
                        <bgpFilter>
                          <direction></direction>
                          <action></action>
                          <network></network>
                          <ipPrefixGe></ipPrefixGe>
                          <ipPrefixLe></ipPrefixLe>
                        </bgpFilter>
                      </bgpFilters>
                    </bgpNeighbour>
                  </bgpNeighbours>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </bgp>
              </routing>
            schema: routingConfigUpdate
      delete:
        displayName: routingConfigDelete
        description: Delete the routing config stored in the NSX Mgr database and the default routes from the specified NSX Edge appliance
      /global:
        displayName: routingGlobalConfig
        description: Global configuration
        put:
          displayName: routingGlobalConfigUpdate
          description: Configure global route
          body:
            application/xml:
              example: |
                <routingGlobalConfig>
                  <routerId></routerId>
                  <ecmp></ecmp>
                  <logging>
                    <enable></enable>
                    <logLevel></logLevel>
                  </logging>
                  <ipPrefixes>
                    <ipPrefix>
                      <name></name>
                      <ipAddress></ipAddress>
                    </ipPrefix>
                  </ipPrefixes>
                </routingGlobalConfig>
              schema: routingGlobalConfigUpdate
        get:
          displayName: routingGlobalConfigRead
          description: Retrieve routing info from NSX Mgr database (default route settings, static route configurations)
      /static:
        displayName: routingConfigStatic
        description: Static and default routes for specified Edge
        get:
          displayName: routingConfigStaticRead
          description: Read static and default routes
        put:
          displayName: routingConfigStaticUpdate
          description: Configure static and default routes
          body:
            application/xml:
              example: |
                <staticRouting>
                  <staticRoutes>
                    <route>
                      <description></description>
                      <vnic></vnic>
                      <network></network>
                      <nextHop></nextHop>
                      <mtu></mtu>
                    </route>
                  </staticRoutes>
                  <defaultRoute>
                    <description></description>
                    <vnic></vnic>
                    <gatewayAddress></gatewayAddress>
                    <mtu></mtu>
                  </defaultRoute>
                </staticRouting>
              schema: routingConfigStaticUpdate
        delete:
          displayName: routingConfigStaticDelete
          description: Delete both static and default routing config stored in the NSX Mgr database
      /ospf:
        displayName: routingOSPF
        description: OSPF Routing for NSX Edge
        get:
          displayName: routingOSPFRead
          description: Query OSPF config
        put:
          displayName: routingOSPFUpdate
          description: Configure OSPF
          body:
            application/xml:
              example: |
                <ospf>
                  <enabled></enabled>
                  <ospfAreas>
                    <ospfArea>
                      <areaId></areaId>
                      <type></type>
                      <authentication>
                        <type></type>
                        <value></value>
                      </authentication>
                    </ospfArea>
                  </ospfAreas>
                  <ospfInterfaces>
                    <ospfInterface>
                      <vnic></vnic>
                      <areaId></areaId>
                      <helloInterval></helloInterval>
                      <deadInterval></deadInterval>
                      <priority></priority>
                      <cost></cost>
                    </ospfInterface>
                  </ospfInterfaces>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </ospf>
              schema: routingOSPFUpdate
        delete:
          displayName: routingOSPFDelete
          description: Delete OSPF routing
      /isis:
        displayName: routingISIS
        description: IS-IS Routes for NSX Edge
        get:
          displayName: routingISISRead
          description: Query ISIS
        put:
          displayName: routingISISUpdate
          description: Config ISIS
          body:
            application/xml:
              example: |
                <isis>
                  <enabled></enabled>
                  <systemId></systemId>
                  <areaIds>
                    <areaId></areaId>
                  </areaIds>
                  <isType></isType>
                  <domainPassword></domainPassword>
                  <areaPassword></areaPassword>
                  <isisInterfaces>
                    <isisInterface>
                      <vnic></vnic>
                      <meshGroup></meshGroup>
                      <helloInterval></helloInterval>
                      <helloMultiplier></helloMultiplier>
                      <lspInterval></lspInterval>
                      <metric></metric>
                      <priority></priority>
                      <circuitType></circuitType>
                      <password></password>
                    </isisInterface>
                  </isisInterfaces>
                  <redistribution>
                    <enabled></enabled>
                      <rules>
                        <rule>
                          <prefixName></prefixName>
                            <from>
                              <isis></isis>
                              <ospf></ospf>
                              <bgp></bgp>
                              <static></static>
                              <connected></connected>
                            </from>
                            <action></action>
                          </rule>
                      </rules>
                  </redistribution>
                </isis>
              schema: routingISISUpdate
        delete:
          displayName: routingISISDelete
          description: Delete ISIS routing
      /bgp:
        displayName: routingBGP
        description: Manage BGP routes for NSX Edge
        get:
          displayName: routingBGPRead
          description: Query BGP
        put:
          displayName: routingBGPUpdate
          description: Configure BGP
          body:
            application/xml:
              example: |
                <bgp>
                  <enabled></enabled>
                  <localAS></localAS>
                  <bgpNeighbours>
                    <bgpNeighbour>
                      <ipAddress></ipAddress>
                      <remoteAS></remoteAS>
                      <weight></weight>
                      <holdDownTimer></holdDownTimer>
                      <keepAliveTimer></keepAliveTimer>
                      <password></password>
                      <bgpFilters>
                        <bgpFilter>
                          <direction></direction>
                          <action></action>
                          <network></network>
                          <ipPrefixGe></ipPrefixGe>
                          <ipPrefixLe></ipPrefixLe>
                        </bgpFilter>
                      </bgpFilters>
                    </bgpNeighbour>
                  </bgpNeighbours>
                  <redistribution>
                    <enabled></enabled>
                    <rules>
                      <rule>
                        <prefixName></prefixName>
                        <from>
                          <isis></isis>
                          <ospf></ospf>
                          <bgp></bgp>
                          <static></static>
                          <connected></connected>
                        </from>
                        <action></action>
                      </rule>
                    </rules>
                  </redistribution>
                </bgp>
              schema: routingBGPUpdate
        delete:
          displayName: routingBGPDelete
          description: Delete BGP Routing
    /bridging/config:
      displayName: bridging
      description: Working with L2 bridging
      get:
        displayName: bridgingRead
        description: Retrieve bridge configuration
      put:
        displayName: bridingUpdate
        description: Configure a bridge
        body:
          application/xml:
            example: |
              <bridges>
                <version></version>
                <enabled></enabled>
                <bridge>
                  <name></name>
                  <virtualWire></virtualWire>
                  <dvportGroup></dvportGroup>
                </bridge>
              </bridges>
            schema: bridingUpdate
      delete:
        displayName: bridgingDelete
        description: Delete bridges
    /loadbalancer/config:
      displayName: loadBalancer
      description: NSX Edge load balancer
      get:
        displayName: loadBalancerRead
        description: Get current load balancer config
      put:
        displayName: loadBalancerConfig
        description: Configure load balancer
        body:
          application/xml:
            example: |
              <loadBalancer>
                <enabled></enabled>
                <enableServiceInsertion></enableServiceInsertion>
                <accelerationEnabled></accelerationEnabled>
                <logging>
                  <enable></enable>
                  <logLevel></logLevel>
                </logging>
                <virtualServer>
                  <virtualServerId></virtualServerId>
                  <name></name>
                  <description></description>
                  <enabled></enabled>
                  <ipAddress></ipAddress>
                  <protocol></protocol>
                  <port></port>
                  <connectionLimit></connectionLimit>
                  <connectionRateLimit></connectionRateLimit>
                  <applicationProfileId></applicationProfileId>
                  <defaultPoolId></defaultPoolId>
                  <enableServiceInsertion></enableServiceInsertion>
                  <accelerationEnabled></accelerationEnabled>
                </virtualServer>
                <applicationProfile>
                  <applicationProfileId></applicationProfileId>
                  <name></name>
                  <insertXForwardedFor></insertXForwardedFor>
                  <sslPassthrough></sslPassthrough>
                  <persistence>
                    <method></method>
                    <cookieName></cookieName>
                    <cookieMode></cookieMode>
                  </persistence>
                </applicationProfile>
                <pool>
                  <poolId></poolId>
                  <name></name>
                  <description></description>
                  <transparent></transparent>
                  <algorithm></algorithm>
                  <monitorId></monitorId>
                  <member>
                    <memberId></memberId>
                    <ipAddress></ipAddress>
                    <weight></weight>
                    <port></port>
                    <minConn></minConn>
                    <maxConn></maxConn>
                    <name></name>
                  </member>
                </pool>
                <monitor>
                  <monitorId></monitorId>
                  <type></type>
                  <interval></interval>
                  <timeout></timeout>
                  <maxRetries></maxRetries>
                  <method></method>
                  <url></url>
                  <name></name>
                </monitor>
              </loadBalancer>
            schema: loadBalancerConfig
      delete:
        displayName: loadBalancerDelete
        description: Delete load balancer configuration
      /applicationprofiles:
        displayName: applicationProfiles
        description: Application profiles define the behavior of a particular type of network traffic
        post:
          displayName: applicationProfilesCreate
          description: Add an application profile
          body:
            application/xml:
              example: |
                <applicationProfile>
                  <name></name>
                  <insertXForwardedFor></insertXForwardedFor>
                  <sslPassthrough></sslPassthrough>
                  <persistence>
                    <method></method>
                    <cookieName></cookieName>
                    <cookieMode></cookieMode>
                  </persistence>
                </applicationProfile>
              schema: applicationProfilesCreate
        get:
          displayName: applicationProfilesRead
          description: Retrieve all application profiles on Edge
        delete:
          displayName: applicationProfilesDelete
          description: Delete all application profiles
        /{appProfileID}:
          displayName: applicationProfile
          description: Modify or retrieve an application profile
          uriParameters:
            appProfileID:
              required: true
              displayName: appProfileID
              description: Specified application profile
          put:
            displayName: applicationProfileUpdate
            description: Modify an application profile
            body:
              application/xml:
                example: |
                  <applicationProfile>
                    <name></name>
                    <insertXForwardedFor></insertXForwardedFor>
                    <sslPassthrough></sslPassthrough>
                    <persistence>
                      <method></method>
                      <cookieName></cookieName>
                      <cookieMode></cookieMode>
                    </persistence>
                  </applicationProfile>
                schema: applicationProfileUpdate
          get:
            displayName: applicationProfileRead
            description: Retrieve an application profile
          delete:
            displayName: applicationProfileDelete
            description: Delete an application profile
      /applicationrules:
        displayName: appRules
        description: Manage application rules that directly manipulate and manage IP app traffic
        post:
          displayName: appRulesCreate
          description: Add an application rule
          body:
            application/xml:
              example: |
                <applicationRule>
                  <name></name>
                  <script></script>
                </applicationRule>
              schema: appRulesCreate
        get:
          displayName: appRulesRead
          description: Read all application rules
        delete:
          displayName: appRulesDelete
          description: Delete all application rules
        /{appruleID}:
          displayName: appRule
          description: Application rule
          uriParameters:
            appruleID:
              required: true
              displayName: appruleID
              description: Specified application rule
          get:
            displayName: appRuleRead
            description: Retrieve an application rule
          put:
            displayName: appRuleUpdate
            description: Modify an app rule
            body:
              application/xml:
                example: |
                  <applicationRule>
                    <name></name>
                    <script></script>
                  </applicationRule>
                schema: appRuleUpdate
          delete:
            displayName: appRuleDelete
            description: Delete an application rule
      /monitors:
        displayName: lbMonitors
        description: Load balancer monitors define health check parameters for a particular type of network traffic
        post:
          displayName: lbMonitorsCreate
          description: Add a load balancer monitor
          body:
            application/xml:
              example: |
                <monitor>
                  <type></type>
                  <interval></interval>
                  <timeout></timeout>
                  <maxRetries></maxRetries>
                  <method></method>
                  <url></url>
                  <name></name>
                </monitor>
              schema: lbMonitorsCreate
        get:
          displayName: lbMonitorsRead
          description: Retrieve all load balancer monitors
        delete:
          displayName: lbMonitorsDelete
          description: Delete all load balancer monitors
        /{monitorID}:
          displayName: lbMonitor
          description: Specific load balancer monitor
          uriParameters:
            monitorID:
              required: true
              displayName: monitorID
              description: Specified monitor
          get:
            displayName: lbMonitorRead
            description: Retrieve a load balancer monitor
          put:
            displayName: lbMonitorUpdate
            description: Modify a load balancer monitor
            body:
              application/xml:
                example: |
                  <monitor>
                    <type></type>
                    <interval></interval>
                    <timeout></timeout>
                    <maxRetries></maxRetries>
                    <method></method>
                    <url></url>
                    <name></name>
                  </monitor>
                schema: lbMonitorUpdate
          delete:
            displayName: lbMonitorDelete
            description: Delete a load balancer monitor
      /virtualservers:
        displayName: virtualServers
        description: You can add an NSX Edge internal or uplink interface as a virtual server
        post:
          displayName: virtualServersCreate
          description: Add a virtual server
          body:
            application/xml:
              example: |
                <virtualServer>
                  <name></name>
                  <description></description>
                  <enabled></enabled>
                  <ipAddress></ipAddress>
                  <protocol></protocol>
                  <port></port>
                  <connectionLimit></connectionLimit>
                  <connectionRateLimit></connectionRateLimit>
                  <applicationProfileId></applicationProfileId>
                  <defaultPoolId></defaultPoolId>
                  <enableServiceInsertion></enableServiceInsertion>
                  <accelerationEnabled></accelerationEnabled>
                </virtualServer>
              schema: virtualServersCreate
        get:
          displayName: virtualServersRead
          description: Retrieve all virtual servers
        delete:
          displayName: virtualServersDelete
          description: Delete all
        /{virtualserverID}:
          displayName: virtualServer
          description: Specified virtual server
          uriParameters:
            virtualserverID:
              required: true
              displayName: virtualserverID
              description: Specified virtual server ID
          get:
            displayName: virtualServerRead
            description: Retrieve virtual server details
          delete:
            displayName: virtualServerDelete
            description: Delete a virtual server
      /pools:
        displayName: pools
        description: Server pools manage load balancer distribution methods and has a monitor attached to it for health check parameters
        post:
          displayName: poolsCreate
          description: Add a load balancer server pool to the Edge
          body:
            application/xml:
              example: |
                <pool>
                  <name></name>
                  <description></description>
                  <transparent></transparent>
                  <algorithm></algorithm>
                  <monitorId></monitorId>
                  <member>
                    <ipAddress></ipAddress>
                    <weight></weight>
                    <port></port>
                    <minConn></minConn>
                    <maxConn></maxConn>
                    <name></name>
                    <monitorPort></monitorPort>
                  </member>
                </pool>
              schema: poolsCreate
        get:
          displayName: poolsRead
          description: Get all backend pools for the specified NSX Edge
        delete:
          displayName: poolsDelete
          description: Delete all backend pools configured on the specified NSX Edge
        /{poolID}:
          displayName: pool
          description: Specific backend pool
          uriParameters:
            poolID:
              required: true
              displayName: poolID
              description: Specified pool ID
          get:
            displayName: poolRead
            description: Get backend pool details
          put:
            displayName: poolUpdate
            description: Modify the specified pool
            body:
              application/xml:
                example: |
                  <pool>
                    <name></name>
                    <description></description>
                    <transparent></transparent>
                    <algorithm></algorithm>
                    <monitorId></monitorId>
                    <member>
                      <ipAddress></ipAddress>
                      <weight></weight>
                      <port></port>
                      <minConn></minConn>
                      <maxConn></maxConn>
                      <name></name>
                      <monitorPort></monitorPort>
                    </member>
                  </pool>
                schema: poolUpdate
          delete:
            displayName: poolDelete
            description: Delete backend pool
      /members/{memberID}:
        displayName: lbMemberCond
        description: Load balancer member condition
        uriParameters:
          memberID:
            required: true
            displayName: memberID
            description: Member ID
        post:
          displayName: lbMemberCond
          description: Update member condition
          queryParameters:
            enable:
              required: true
              displayName: enable
              type: boolean
              description: Enable or disable member condition
    /loadbalancer/statistics:
      displayName: lbStatistics
      description: Load balancer statistics
      get:
        displayName: lbStatisticsRead
        description: Retrieve load balancer statistics
    /loadbalancer/acceleration:
      displayName: lbAcceleration
      description: Update acceleration mode
      post:
        queryParameters:
          enable:
            required: true
            displayName: enable
            description: Enable or disable load balancer acceleration mode
            type: boolean
    /dns/config:
      displayName: edgeDns
      description: Configure DNS servers to which vShield Edge can relay name resolution requests
      get:
        displayName: edgeDnsRead
        description: Retrieve DNS configuration
      put:
        displayName: edgeDnsUpdate
        description: Configure DNS servers
        body:
          application/xml:
            example: |
              <dns>
                <enabled></enabled>
                <dnsServers>
                  <ipAddress></ipAddress>
                </dnsServers>
                <cacheSize></cacheSize>
                <listeners>
                  <ipAddress></ipAddress>
                </listeners>
                <logging>
                  <logLevel></logLevel>
                  <enable></enable>
                </logging>
              </dns>
            schema: edgeDnsUpdate
      delete:
        displayName: edgeDnsDelete
        description: Delete DNS configuration
    /dns/statistics:
      displayName: edgeDnsStats
      description: Get DNS server statistics
      get:
        displayName: edgeDnsStats
        description: Get DNS server statistics
    /dhcp/config:
      displayName: dhcp
      description: Configure DHCP for NSX Edge
      get:
        displayName: dhcpRead
        description: Get DHCP configuration
      put:
        displayName: dhcpUpdate
        description: Configure DHCP service
        body:
          application/xml:
            example: |
              <dhcp>
                <enabled></enabled>
                <staticBindings>
                  <staticBinding>
                    <macAddress></macAddress>
                    <vmId></vmId>
                    <vnicId></vnicId>
                    <hostname></hostname>
                    <ipAddress></ipAddress>
                    <subnetMask></subnetMask>
                    <defaultGateway></defaultGateway>
                    <domainName></domainName>
                    <primaryNameServer></primaryNameServer>
                    <secondaryNameServer></secondaryNameServer>
                    <leaseTime></leaseTime>
                    <autoConfigDNS></autoConfigDNS>
                  </staticBinding>
                </staticBindings>
                <ipPools>
                  <ipPool>
                    <ipRange></ipRange>
                    <defaultGateway></defaultGateway>
                    <subnetMask></subnetMask>
                    <domainName></domainName>
                    <primaryNameServer></primaryNameServer>
                    <secondaryNameServer></secondaryNameServer>
                    <leaseTime></leaseTime>
                    <autoConfigDNS></autoConfigDNS>
                  </ipPool>
                </ipPools>
                <logging>
                  <enable></enable>
                  <logLevel></logLevel>
                </logging>
              </dhcp>
            schema: dhcpUpdate
      delete:
        displayName: dhcpDelete
        description: Delete the DHCP configuration, restoring it to factory default
      /ippools:
        displayName: dhcpPool
        description: Adding IP pools to DHCP configuration
        post:
          displayName: dhcpPoolCreate
          description: Add an IP pool to the DHCP configuration. returns a pool ID within a Location HTTP header
          body:
            application/xml:
              example: |
                <ipPool>
                  <ipRange></ipRange>
                  <defaultGateway></defaultGateway>
                  <domainName></domainName>
                  <primaryNameServer></primaryNameServer>
                  <secondaryNameServer></secondaryNameServer>
                  <leaseTime></leaseTime>
                  <autoConfigureDNS></autoConfigureDNS>
                </ipPool>
              schema: dhcpPoolCreate
        /{poolID}:
          displayName: dhcpPoolID
          description: Specific DHCP pool
          uriParameters:
            poolID:
              required: true
              displayName: poolID
              description: Specified DHCP IP pool
          delete:
            displayName: dhcpPoolIDDelete
            description: Delete a pool specified by pool ID
      /bindings:
        displayName: dhcpStaticBinding
        description: Adding static-binding to DHCP configuration.
        post:
          displayName: dhcpStaticBindingCreate
          description: Append a static-binding to DHCP config. A static-binding ID is returned within a Location HTTP header
          body:
            application/xml:
              example: |
                <staticBinding>
                  <vmId></vmId>
                  <vnicId></vnicId>
                  <hostname></hostname>
                  <ipAddress></ipAddress>
                  <defaultGateway></defaultGateway>
                  <domainName></domainName>
                  <primaryNameServer></primaryNameServer>
                  <secondaryNameServer></secondaryNameServer>
                  <leaseTime></leaseTime>
                  <autoConfigureDNS></autoConfigureDNS>
                </staticBinding>
              schema: dhcpStaticBindingCreate
        /{bindingID}:
          displayName: dhcpStaticBindingID
          description: Specific DHCP static binding
          uriParameters:
            bindingID:
              required: true
              displayName: bindingID
              description: Specified static-binding ID
          delete:
            displayName: dhcpStaticBindingIDDelete
            description: Delete the static-binding by ID
      /relay:
        displayName: dhcpRelay
        description: Configure DHCP relay
        get:
          displayName: dhcpRelayRead
          description: Query DHCP relay
        put:
          displayName: dhcpRelayUpdate
          description: Configure DHCP relay
          body:
            application/xml:
              example: |
                <relay>
                  <relayServer>
                    <groupingObjectId></groupingObjectId>
                    <groupingObjectId></groupingObjectId>
                    <ipAddress></ipAddress>
                    <fqdn></fqdn>
                  </relayServer>
                  <relayAgents>
                    <relayAgent>
                      <vnicIndex></vnicIndex>
                      <giAddress></giAddress>
                    </relayAgent>
                  </relayAgents>
                </relay>
              schema: dhcpRelayUpdate
        delete:
          displayName: dhcpRelayDelete
          description: Delete DHCP relay configuration
    /dhcp/leaseInfo:
      displayName: dhcpLease
      description: DHCP Lease information
      get:
        displayName: dhcpLeaseRead
        description: Get DHCP lease information
    /highavailability/config:
      displayName: highAvailability
      description: Ensures that an Edge appliance is always available on your virtualized network.
      get:
        displayName: highAvailabilityRead
        description: Get high availability configuration
      put:
        displayName: highAvailabilityCreate
        description: Configure high availability
        body:
          application/xml:
            example: |
              <highAvailability>
                <vnic></vnic>
                <ipAddresses>
                  <ipAddress></ipAddress>
                </ipAddresses>
                <declareDeadTime></declareDeadTime>
                <enabled></enabled>
              </highAvailability>
            schema: highAvailabilityCreate
      delete:
        displayName: highAvailabilityDelete
        description: Delete high availability configuration
    /syslog/config:
      displayName: syslog
      description: Configure one or two remote syslog servers. Edge events and logs related to firewall events that flow from Edge appliances are sent to the syslog servers
      get:
        displayName: syslogRead
        description: Query syslog servers
      put:
        displayName: syslogUpdate
        description: Configure syslog servers
        body:
          application/xml:
            example: |
              <syslog>
                <protocol></protocol>
                <serverAddresses>
                  <ipAddress></ipAddress>
                </serverAddresses>
              </syslog>
            schema: syslogUpdate
      delete:
        displayName: syslogDelete
        description: Delete syslog servers
    /sslvpn/config:
      displayName: sslVPN
      description: Manage SSL VPN
      post:
        displayName: sslVPNCreate
        description: Enable or disable SSL VPN
        queryParameters:
          enableService:
            displayName: enableService
            required: true
            description: Set to true to enable, false to disable
            type: boolean
      get:
        displayName: sslVPNRead
        description: Retrieve SSL VPN details
      put:
        displayName: sslVPNUpdate
        description: Reconfigure the entire SSL VPN
        body:
          application/xml:
            example: |
              <logonLogoffScript>
                <logonLogoffScript>
                  <objectId></objectId>
                  <scriptFileId></scriptFileId>
                  <type></type>
                  <enabled></enabled>
                  <description></description>
                </logonLogoffScript>
              </logonLogoffScript>
            schema: sslVPNUpdate
      delete:
        displayName: sslVPNDelete
        description: Delete the SSL VPN configurations on the Edge
      /server:
        displayName: serverSettings
        description: Configure SSL VPN server on port 443 using the certificate named server-cert that is already uploaded on the NSX Edge appliance and the specified cipher
        get:
          displayName: serverSettingsRead
          description: Get server settings
        put:
          displayName: serverSettingsUpdate
          description: Apply server settings
          body:
            application/xml:
              example: |
                <serverSettings>
                  <serverAddresses>
                    <ipAddress></ipAddress>
                  </serverAddresses>
                  <port></port>
                  <certificateId></certificateId>
                  <sslVersionList>
                    <version></version>
                  </sslVersionList>
                </serverSettings>
              schema: serverSettingsUpdate
      /client/networkextension/privatenetworks:
        displayName: privateNetworks
        description: Configure a private network to expose to remote users over SSL VPN tunnel
        post:
          displayName: privateNetworksCreate
          description: Add a private network
          body:
            application/xml:
              example: |
                <privateNetwork>
                  <description></description>
                  <network></network>
                  <sendOverTunnel>
                    <ports></ports>
                    <optimize></optimize>
                  </sendOverTunnel>
                  <enabled></enabled>
                </privateNetwork>
              schema: privateNetworksCreate
        get:
          displayName: privateNetworksRead
          description: Get all private network profiles in the SSL VPN instance
        put:
          displayName: privateNetworksUpdate
          description: Update all private network configs of NSX Edge with the given list of private network configs. If the config is present, it is updated; otherwise, a new private network config is created. Existing configs not included in the call body are deleted
        delete:
          displayName: privateNetworksDelete
          description: Delete all Private Networks from the SSL VPN instance
        /{networkID}:
          displayName: privateNetwork
          description: Specific private network
          uriParameters:
            networkID:
              required: true
              displayName: networkID
              description: Specified private network
          get:
            displayName: privateNetworkRead
            description: Get the specified private network in the SSL VPN service
          put:
            displayName: privateNetworkUpdate
            description: Modify specified private network in the SSL VPN service
            body:
              application/xml:
                example: |
                  <privateNetwork>
                    <description></description>
                    <network></network>
                    <sendOverTunnel>
                      <ports></ports>
                      <optimize></optimize>
                    </sendOverTunnel>
                    <enabled></enabled>
                  </privateNetwork>
                schema: privateNetworkUpdate
          delete:
            displayName: privateNetworkDelete
            description: Delete private network
      /client/networkextension/ippools:
        displayName: netExtIpPools
        description: IP pools to assign IP addresses to remote users
        post:
          displayName: netExtipPoolsCreate
          description: Create an IP pool
          body:
            application/xml:
              example: |
                <ipAddressPool>
                  <description></description>
                  <ipRange></ipRange>
                  <netmask></netmask>
                  <gateway></gateway>
                  <primaryDns></primaryDns>
                  <secondaryDns></secondaryDns>
                  <dnsSuffix></dnsSuffix>
                  <winsServer></winsServer>
                  <enabled></enabled>
                </ipAddressPool>
              schema: netExtipPoolsCreate
        get:
          displayName: netExtipPoolsRead
          description: Get all IP pools configured on SSL VPN
        put:
          displayName: netExtipPoolsUpdate
          description: Update all IP pools with the given list of pools. If the pool is present, it is updated; otherwise, a new pool is created. Existing pools not in the body are deleted
          body:
            application/xml:
              example: |
                <ipAddressPool>
                  <description></description>
                  <ipRange></ipRange>
                  <netmask></netmask>
                  <gateway></gateway>
                  <primaryDns></primaryDns>
                  <secondaryDns></secondaryDns>
                  <dnsSuffix></dnsSuffix>
                  <winsServer></winsServer>
                  <enabled></enabled>
                </ipAddressPool>
              schema: netExtipPoolsUpdate
        delete:
          displayName: netExtipPoolsDelete
          description: Delete all IP pools configured on SSL VPN
        /{ippoolID}:
          displayName: netExtipPool
          description: Specified IP pool
          uriParameters:
            ippoolID:
              required: true
              displayName: ipPoolID
              description: Specified IP pool ID
          get:
            displayName: netExtipPoolRead
            description: Get details of specified IP pool
          put:
            displayName: netExtipPoolUpdate
            description: Modify specified IP pool
          delete:
            displayName: netExtipPoolDelete
            description: Delete the specified IP pool
      /client/networkextension/clientconfig:
        displayName: clientConfig
        description: Advanced parameters for full access client configurations--such as whether client should auto-reconnect in case of network failures or network unavailability, or whether the client should be uninstalled after logout
        put:
          displayName: clientConfigUpdate
          description: Set parameters for full access client configurations
          body:
            application/xml:
              example: |
                <clientConfiguration>
                  <autoReconnect></autoReconnect>
                  <fullTunnel>
                    <excludeLocalSubnets></excludeLocalSubnets>
                    <gatewayIp></gatewayIp>
                  </fullTunnel>
                  <upgradeNotification></upgradeNotification>
                </clientConfiguration>
              schema: clientConfigUpdate
        get:
          displayName: clientConfigRead
          description: Get client configuration
      /client/networkextension/installpackages:
        displayName: installPackages
        description: Installation packages for SSL VPN clients
        post:
          displayName: installPackagesCreate
          description: Create installers for full access network clients. These setup binaries are downloaded by remote clients and installed on their systems.
          body:
            application/xml:
              example: |
                <clientInstallPackage>
                  <profileName></profileName>
                  <gatewayList>
                    <gateway>
                      <hostName></hostName>
                      <port></port>
                    </gateway>
                  </gatewayList>
                  <startClientOnLogon></startClientOnLogon>
                  <hideSystrayIcon></hideSystrayIcon>
                  <rememberPassword></rememberPassword>
                  <silentModeOperation></silentModeOperation>
                  <silentModeInstallation></silentModeInstallation>
                  <hideNetworkAdaptor></hideNetworkAdaptor>
                  <createDesktopIcon></createDesktopIcon>
                  <enforceServerSecurityCertValidation></enforceServerSecurityCertValidation>
                  <createLinuxClient></createLinuxClient>
                  <createMacClient></createMacClient>
                  <description></description>
                  <enabled></enabled>
                </clientInstallPackage>
              schema: installPackagesCreate
        get:
          displayName: installPackagesRead
          description: Get information about all installation packages
        put:
          displayName: installPackagesUpdate
          description: Update all installation packages with the given list. If the package is present, it is updated; otherwise a new installation package is created. Existing packages not included in the body are deleted.
        delete:
          displayName: installPackagesDelete
          description: Delete all client installation packages
        /{packageID}:
          displayName: installPackage
          description: Specified installation package
          uriParameters:
            packageID:
              required: true
              displayName: packageID
              description: Specified installation package ID
          get:
            displayName: installPackageRead
            description: Get information about the specified installation package
          put:
            displayName: installPackageUpdate
            description: Modify the specified installation package
            body:
              application/xml:
                example: |
                  <clientInstallPackage>
                    <profileName></profileName>
                    <gatewayList>
                      <gateway>
                        <hostName></hostName>
                        <port></port>
                      </gateway>
                    </gatewayList>
                    <startClientOnLogon></startClientOnLogon>
                    <hideSystrayIcon></hideSystrayIcon>
                    <rememberPassword></rememberPassword>
                    <silentModeOperation></silentModeOperation>
                    <silentModeInstallation></silentModeInstallation>
                    <hideNetworkAdaptor></hideNetworkAdaptor>
                    <createDesktopIcon></createDesktopIcon>
                    <enforceServerSecurityCertValidation></enforceServerSecurityCertValidation>
                    <createLinuxClient></createLinuxClient>
                    <createMacClient></createMacClient>
                    <description></description>
                    <enabled></enabled>
                  </clientInstallPackage>
                schema: installPackageUpdate
          delete:
            displayName: installPackageDelete
            description: Delete the specified installation package
      /layout:
        displayName: layout
        description: Layout configuration
        get:
          displayName: layoutRead
          description: Query layout configuration
        /images:
          put:
            displayName: layoutUpdate
            description: Set the portal layout
            body:
              application/xml:
                example: |
                  <layout>
                    <portalTitle></portalTitle>
                    <companyName></companyName>
                    <logoBackgroundColor></logoBackgroundColor>
                    <titleColor></titleColor>
                    <topFrameColor></topFrameColor>
                    <menuBarColor></menuBarColor>
                    <rowAlternativeColor></rowAlternativeColor>
                    <bodyColor></bodyColor>
                    <rowColor></rowColor>
                  </layout>
                schema: layoutUpdate
      /webresources:
        displayName: webResources
        description: Web access server that a remote user can connect to via a web browser
        post:
          displayName: webResourcesCreate
          description: Add portal web resource
          body:
            application/xml:
              example: |
                <webResource>
                  <name></name>
                  <url></url>
                  <method name="">
                    <data></data>
                  </method>
                  <description></description>
                  <enabled></enabled>
                </webResource>
              schema: webResourcesCreate
        get:
          displayName: webResourcesRead
          description: Get all web resources on the SSL VPN instance
        delete:
          displayName: webResourcesDelete
          description: Delete all web resources on the SSL VPN instance
        /{id}:
          displayName: webResource
          description: Specified web access server
          uriParameters:
            id:
              displayName: id
              description: ID of specified web access server
              required: true
          get:
            displayName: webResourceRead
            description: Get the specified web access server
          put:
            displayName: webResourceUpdate
            description: Modify the specified web access server
          delete:
            displayName: webResourceDelete
            description: Delete the specified web access server
      /auth/localserver/users:
        displayName: sslVPNUsers
        description: Portal users
        post:
          displayName: usersCreate
          description: Add a new portal user
          body:
            application/xml:
              example: |
                <user>
                  <userId></userId>
                  <password></password>
                  <firstName></firstName>
                  <lastName></lastName>
                  <description></description>
                  <disableUserAccount></disableUserAccount>
                  <passwordNeverExpires></passwordNeverExpires>
                  <allowChangePassword>
                    <changePasswordOnNextLogin></changePasswordOnNextLogin>
                  </allowChangePassword>
                </user>
              schema: usersCreate
        put:
          displayName: usersUpdate
          description: Modify the specified portal user
          body:
            application/xml:
              example: |
                <user>
                  <userId></userId>
                  <password></password>
                  <firstName></firstName>
                  <lastName></lastName>
                  <description></description>
                  <disableUserAccount></disableUserAccount>
                  <passwordNeverExpires></passwordNeverExpires>
                  <allowChangePassword>
                    <changePasswordOnNextLogin></changePasswordOnNextLogin>
                  </allowChangePassword>
                </user>
              schema: usersUpdate
        delete:
          displayName: usersDelete
          description: Delete all users on the specifed SSL VPN instance
        /{userID}:
          displayName: user
          description: Specified user
          get:
            displayName: userRead
            description: Get information about a specified user
          delete:
            displayName: userDelete
            description: Delete specified user
      /auth/settings:
        displayName: authSettings
        description: Authentication settings
        get:
          displayName: authSettingsRead
          description: Get information about authentication server
        put:
          displayName: authSettingsUpdate
          description: Set authentication process for remote users. Specify username/password authentication, active directory, ldap, radius, client certificate based authentication
          body:
            application/xml:
              example: |
                <authenticationConfig>
                  <passwordAuthentication>
                  <authenticationTimeout></authenticationTimeout>
                    <primaryAuthServers>
                      <com.vmware.vshield.edge.sslvpn.dto.LdapAuthServerDto>
                        <ip></ip>
                        <port></port>
                        <timeOut></timeOut>
                        <enableSsl></enableSsl>
                        <searchBase></searchBase>
                        <bindDomainName></bindDomainName>
                        <bindPassword></bindPassword>
                        <loginAttributeName></loginAttributeName>
                        <searchFilter></searchFilter>
                        <enabled></enabled>
                      </com.vmware.vshield.edge.sslvpn.dto.LdapAuthServerDto>
                      <com.vmware.vshield.edge.sslvpn.dto.RadiusAuthServerDto>
                        <ip></ip>
                        <port></port>
                        <timeOut></timeOut>
                        <secret></secret>
                        <nasIp></nasIp>
                        <retryCount></retryCount>
                      </com.vmware.vshield.edge.sslvpn.dto.RadiusAuthServerDto>
                      <com.vmware.vshield.edge.sslvpn.dto.LocalAuthServerDto>
                        <enabled></enabled>
                        <passwordPolicy>
                          <minLength></minLength>
                          <maxLength></maxLength>
                          <minAlphabets></minAlphabets>
                          <minDigits></minDigits>
                          <minSpecialChar></minSpecialChar>
                          <allowUserIdWithinPassword></allowUserIdWithinPassword>
                          <passwordLifeTime></passwordLifeTime>
                          <expiryNotification></expiryNotification>
                        </passwordPolicy>
                        <accountLockoutPolicy>
                          <retryCount></retryCount>
                          <retryDuration></retryDuration>
                          <lockoutDuration></lockoutDuration>
                        </accountLockoutPolicy>
                      </com.vmware.vshield.edge.sslvpn.dto.LocalAuthServerDto>
                      <com.vmware.vshield.edge.sslvpn.dto.RsaAuthServerDto>
                        <timeOut></timeOut>
                        <sourceIp></sourceIp>
                      </com.vmware.vshield.edge.sslvpn.dto.RsaAuthServerDto>
                    </primaryAuthServers>
                    <secondaryAuthServer>
                      <com.vmware.vshield.edge.sslvpn.dto.AdAuthServerDto>
                        <ip>1.1.1.1</ip>
                        <port>90</port>
                        <timeOut>20</timeOut>
                        <enableSsl>false</enableSsl>
                        <searchBase>searchbasevalue</searchBase>
                        <bindDomainName>binddnvalue</bindDomainName>
                        <bindPassword>password</bindPassword>
                        <loginAttributeName>cain</loginAttributeName>
                        <searchFilter>found</searchFilter>
                        <terminateSessionOnAuthFails>false</terminateSessionOnAuthFails>
                        <enabled>true</enabled>
                      </com.vmware.vshield.edge.sslvpn.dto.AdAuthServerDto>
                    </secondaryAuthServer>
                  </passwordAuthentication>
                </authenticationConfig>
              schema: authSettingsUpdate
        /rsaconfigfile:
          displayName: rsaConfig
          description: RSA authentication server, bound to the SSL gateway
          post:
            displayName: rsaConfigCreate
            description: Upload RSA config file (See "Generate the Authentication Manager Configuration File" section of the RSA Authentication Manager Administrator's guide for instructions on how to configure and download the RSA config file from RSA Authentication Manager)
      /advancedconfig:
        displayName: advancedConfig
        description: SSL VPN advanced configuration
        get:
          displayName: advancedConfigRead
          description: Retrieve SSL VPN advanced configuration
        put:
          displayName: advancedConfigUpdate
          description: Apply advanced configuration
          body:
            application/xml:
              example: |
                <advancedConfig>
                  <enableCompression></enableCompression>
                  <forceVirtualKeyboard></forceVirtualKeyboard>
                  <preventMultipleLogon></preventMultipleLogon>
                  <randomizeVirtualkeys></randomizeVirtualkeys>
                  <timeout>
                    <forcedTimeout></forcedTimeout>
                    <sessionIdleTimeout></sessionIdleTimeout>
                  </timeout>
                  <clientNotification></clientNotification>
                  <enablePublicUrlAccess></enablePublicUrlAccess>
                  <enableLogging></enableLogging>
                </advancedConfig>
              schema: advancedConfigUpdate
      /script:
        displayName: script
        description: Logon and logoff scripts for NSX Edge gateway
        post:
          displayName: scriptCreate
          description: Configure parameters associated with the uploaded script file
          body:
            application/xml:
              example: |
                <logonLogoffScript>
                  <scriptFileId></scriptFileId>
                  <type></type>
                  <description></description>
                  <enabled></enabled>
                </logonLogoffScript>
              schema: scriptCreate
        get:
          displayName: scriptRead
          description: Retrieve all script configurations for the Edge
        put:
          displayName: scriptUpdate
          description: Update all script configurations with the given list of configurations. If the config is present, its is updated; otherwise, a new config is created. Existing configs not included in the body are deleted
          body:
            application/xml:
              example: |
                <logonLogoffScript>
                  <scriptFileId></scriptFileId>
                  <type></type>
                  <description></description>
                  <enabled></enabled>
                </logonLogoffScript>
              schema: scriptUpdate
        delete:
          displayName: scriptDelete
          description: Delete all script configurations
        /{fileID}:
          displayName: scriptFileID
          description: Specified uploaded script file
          uriParameters:
            fileID:
              required: true
              displayName: fileID
              description: Specified script file
          get:
            displayName: scriptFileIDRead
            description: Retrieve parameters associated with the specified script file
          put:
            displayName: scriptFileIDUpdate
            description: Modify script parameters
            body:
              application/xml:
                example: |
                  <logonLogoffScript>
                    <scriptFileId></scriptFileId>
                    <type></type>
                    <description></description>
                    <enabled></enabled>
                  </logonLogoffScript>
                schema: scriptFileIDUpdate
          delete:
            displayName: scriptFileIDDelete
            description: Delete script parameters
        /file: # PDF pg 238
          displayName: scriptFile
          description: Logon and logoff scripts for NSX Edge gateway
          post:
            displayName: scriptFileCreate
            description: Upload a login/logoff script. Returns a script file ID to configure the parameters
    /sslvpn/auth/localusers/users:
      displayName: allUsers
      description: All users of NSX Edge
      put:
        displayName: allUsersUpdate
        description: Update all users with the given list of users. If the user is present, it is updated. Otherwise, and new user is created. Existing users not included in the body are deleted.
        body:
          application/xml:
            example: |
              <users>
                <user>
                  <userId></userId>
                  <password></password>
                  <firstName></firstName>
                  <lastName></lastName>
                  <description></description>
                  <disableUserAccount></disableUserAccount>
                  <passwordNeverExpires></passwordNeverExpires>
                  <allowChangePassword>
                    <changePasswordOnNextLogin></changePasswordOnNextLogin>
                  </allowChangePassword>
                </user>
              </users>
            schema: allUsersUpdate
    /sslvpn/activesessions:
      displayName: sslVPNActiveClients
      description: Working with active clients
      get:
        displayName: sslVPNActiveClientsRead
        description: Retrieve a list of active clients for the SSL VPN session
      /{sessionID}:
        displayName: session
        description: Specified client session
        uriParameters:
          sessionID:
            required: true
            displayName: sessionID
            description: Specified client session
        delete:
          displayName: sessionDelete
          description: Disconnect an active client
    /statistics/dashboard/sslvpn:
      displayName: sslVPNStats
      description: SSL VPN statistics on the specified NSX Edge
      get:
        displayName: sslVPNStatsRead
        description: Retrieve SSL VPN statistics on the specified NSX Edge
        queryParameters:
          interval:
            displayName: interval
            description: Specify a range; can be 1 - 60 minutes, or oneDay|oneWeek|oneMonth|oneYear. Default is 60 minutes
    /statistics/dashboard/ipsec:
      displayName: ipsecTrafficStats
      description: Tunnel traffic statistics
      get:
        displayName: ipsecTrafficStatsRead
        description: Retrieve tunnel traffic statistics for specified time interval. Default is 1 hour. Other possible values are 1-60 minutes|oneDay|oneWeek|oneMonth|oneYear
    /statistics/dashboard/interface:
      displayName: vnicDashStats
      description: Dashboard statistics
      get:
        displayName: vnicDashStatsRead
        description: Retrieve dashboard statistics between the specified start and end times.
        queryParameters:
          interval:
            required: true
            displayName: interval
            description: Specify a start and end time range in seconds
    /statistics/interfaces:
      displayName: vnicStats
      description: Interface statistics
      get:
        displayName: vnicStatsRead
        description: Get interface statistics
      /uplink:
        displayName: uplinkVNICStats
        description: Uplink interface statistics
        get:
          displayName: uplinkVNICStatsRead
          description: Get uplink interface statistics
      /internal:
        displayName: internalVNICStats
        description: Internal interface statistics
        get:
          displayName: internalVNICStatsRead
          description: Get internal interface statistics
    /l2vpn/config:
      displayName: l2VPN
      description: L2 VPN allows you to configure a tunnel between two sites. VM's remain on the same subnet in spite of being moved between these sites, enabling you to extend your datacenter. An NSX Edge at one site can provide all services to VM's on the other site.
      post:
        displayName: l2VPNCreate
        description: Enable or disable L2 VPN service according to the value of the query parameter "enableService"
        queryParameters:
          enableService:
            required: true
            displayName: enableService
            description: Enable or disable L2 VPN
            type: boolean
      get:
        displayName: l2VPNRead
        description: Retrieve the current L2VPN configuration for NSX Edge
      put:
        displayName: l2VPNUpdate
        description: Configure L2VPN for server or client
        body:
          application/xml:
      delete:
        displayName: l2VPNDelete
        description: Delete L2 VPN
      /statistics:
        displayName: statistics
        description: L2 VPN statistics
        get:
          displayName: statisticsRead
          description: Retrieve L2 VPN stats, which has information such as tunnel status, sent bytes, received bytes etc. for the given Edge
    /ipsec/config:
      displayName: ipsecConfig
      description: Working with IPSEC VPN
      get:
        displayName: ipsecConfigRead
        description: Retrieve IPSec configuration
      put:
        displayName: ipsecConfigUpdate
        description: Configure IPSEC VPN
        body:
          application/xml:
      delete:
        displayName: ipsecConfigDelete
        description: Delete the IPSec configuration
    /ipsec/statistics:
      displayName: ipsecStats
      description: IPSec statistics
      get:
        displayName: ipsecStatsRead
        description: Retrieve IPSec statistics
    /autoconfiguration:
      displayName: autoConfig
      description: Auto config is enabled by default. If you disable, you must add required NAT, firewall, routing rules
      get:
        displayName: autoConfigRead
        description: Retrieve auto config settings for the Edge
      put:
        displayName: autoConfigUpdate
        description: Change the auto configuration settings for the NSX Edge
        body:
          application/xml:
            example: |
              <autoConfiguration>
                <enabled></enabled>
                <rulePriority></rulePriority>
              </autoConfiguration>
            schema: autoConfigUpdate
    /appliances:
      displayName: appliances
      description: Working with Edge appliances
      post:
        displayName: appliancesCreate
        description: Change the size of both appliances
        queryParameters:
          size:
            required: true
            displayName: size
            description: set to compact|large|xlarge
      get:
        displayName: appliancesRead
        description: Retrieve appliance configuration
      put:
        displayName: appliancesUpdate
        description: Modify appliance configuration (tip -- retrieve the config using GET call, then modify the parameters and send as body)
      /{haIndex}:
        displayName: appliance
        description: Manage a specified appliance using its HA index
        uriParameters:
          haIndex:
            required: true
            displayName: haIndex
            description: Specified appliance HA index
        get:
          displayName: applianceRead
          description: Get configuration of specified appliance
        put:
          displayName: applianceUpdate
          description: Modify the configuration of the specified appliance
          body:
            application/xml:
              example: |
                <appliance>
                  <resourcePoolId></resourcePoolId>
                  <datastoreId></datastoreId>
                  <hostId></hostId>
                  <vmFolderId></vmFolderId>
                  <customField>
                    <key></key>
                    <value></value>
                  </customField>
                  <cpuReservation>
                    <limit></limit>
                    <reservation></reservation>
                    <shares></shares>
                  </cpuReservation>
                  <memoryReservation>
                    <limit></limit>
                    <reservation></reservation>
                    <shares></shares>
                  </memoryReservation>
                </appliance>
              schema: applianceUpdate
        delete:
          displayName: applianceDelete
          description: Delete the appliance
    /vnics:
      displayName: vnics
      description: Working with interfaces. Add up to ten internal/uplink interfaces to each Edge. Each Edge must have at least one internal interface
      post:
        displayName: vnicsCreate
        description: Add an interface or sub interface
        queryParameters:
          action:
            required: true
            displayName: action
            description: always set to "patch"
        body:
          application/xml:
      get:
        displayName: vnicsRead
        description: Retrieve all interfaces for Edge
      /{index}:
        displayName: vnic
        description: Specified interface by index
        uriParameters:
          index:
            required: true
            displayName: index
            description: Specified interface
        get:
          displayName: vnicRead
          description: Retrieve interface
        put:
          displayName: vnicUpdate
          description: Modify the specified interface
          body:
            application/xml:
        delete:
          displayName: vnicDelete
          description: Delete interface
    /mgmtinterface:
      displayName: mgmtInterface
      description: Working with management interfaces for an NSX Edge router
      get:
        displayName: mgmtInterfaceRead
        description: Retrieve all managedment interfaces to the NSX Edge router
      put:
        displayName: mgmtInterfaceUpdate
        description: Configure management interfaces for NSX Edge router
        body:
          application/xml:
            example: |
              <mgmtInterface>
                <addressGroups>
                  <addressGroup>
                    <primaryAddress></primaryAddress>
                    <subnetMask></subnetMask>
                  </addressGroup>
                </addressGroups>
                <mtu></mtu>
                <connectedToId></connectedToId>
              </mgmtInterface>
            schema: mgmtInterfaceUpdate
    /interfaces:
      displayName: interfaces
      description: Working with all NSX Edge router interfaces
      post:
        displayName: interfacesCreate
        description: Add interfaces for NSX Edge router. Can have up to 8 uplink interfaces
        queryParameters:
          action:
            displayName: action
            required: true
            description: Always set to 'patch'
        body:
          application/xml:
            example: |
              <interfaces>
                <interface>
                  <name></name>
                  <addressGroups>
                    <addressGroup>
                      <primaryAddress></primaryAddress>
                      <subnetMask></subnetMask>
                    </addressGroup>
                  </addressGroups>
                  <mtu></mtu>
                  <type></type>
                  <isConnected></isConnected>
                  <connectedToId></connectedToId>
                </interface>
              </interfaces>
            schema: interfacesCreate
      get:
        displayName: interfacesRead
        description: Retrieve all interfaces for Edge router
      delete:
        displayName: interfacesDelete
        description: Delete interfaces
        queryParameters:
          index:
            displayName: index
            description: Specify index of interface to delete (e.g. ?index=<index1>&index=<index2>). If no indices specified, all interfaces are deleted
      /{index}:
        displayName: interface
        description: Manage a specific NSX Edge router interface
        uriParameters:
          index:
            required: true
            displayName: index
            description: Specified router interface
        get:
          displayName: interfaceRead
          description: Retrieve information on specified Edge router interface
        delete:
          displayName: interfaceDelete
          description: Delete interface configuration and reset to factory default
  /jobs:
    displayName: nsxEdgeJobs
    description: NSX Edge async jobs
    get:
      displayName: nsxEdgeJobsRead
      description: Query jobs. Assumes Edge is configured in async mode, where ?async=true is used at the end of any 4.0 service configuration URI for POST, PUT, and DELETE calls.
      queryParameters:
        status:
          displayName: status
          description: status set to "all" or "active"
    /{jobId}:
      displayName: nsxEdgeJob
      description: Status of Edge async jobs. Assumes Edge is configured in async mode, where ?async=true is used at the end of any 4.0 service configuration URI for POST, PUT, and DELETE calls.
      uriParameters:
        jobId:
          required: true
          displayName: jobId
          description: Job ID
      get:
        displayName: nsxEdgeJobRead
        description: Retrieve job status (SUCCESS/FAILED/QUEUED/RUNNING/ROLLBACK), URI of the resource, and ID of the resource as shown in response body
/3.0/edges/{edgeID}:
  displayName: nsxEdgeUpgrade
  description: Upgrading NSX Edge
  uriParameters:
    edgeID:
      required: true
      displayName: edgeID
      description: Specified Edge
  post:
    displayName: nsxEdgeUpgrade
    description: Upgrade NSX Edge
    queryParameters:
      action:
        required: true
        displayName: action
        description: Set this to 'upgrade'
/2.0/services/truststore:
  displayName: truststore
  description: Operation on truststore (certificates)
  /certificate:
    displayName: certificate
    description: Certificates and certificate chains
    post:
      displayName: certificateCSRCreate
      description: Create certificate for CSR
      body:
        application/xml:
          example: |
            <trustObject>
              <pemEncoding></pemEncoding>
            </trustObject>
          schema: certificateCSRCreate
    /scope/{scopeId}:
      displayName: certificateScope
      description: Certificates for a scope
      uriParameters:
        scopeId:
          required: true
          displayName: scopeId
          description: Scope ID
      get:
        displayName: certificateScopeRead
        description: Query all certificates for a scope
    /{scopeId}: # PDF pg 159
      displayName: certificateSelfSigned
      description: Working with vShield Edge self-signed certificates
      uriParameters:
        scopeId:
          required: true
          displayName: scopeId
          description: Scope ID
      post:
        displayName: certificateSelfSignedCreate
        description: Create a single certificate
        body:
          application/xml:
            example: |
              <trustObject>
                <pemEncoding></pemEncoding>
                <privateKey></privateKey>
                <passphrase></passphrase>
              </trustObject>
            schema: certificateSelfSignedCreate
    /{certificateId}:
      displayName: certificate
      description: Certificate specified by ID
      uriParameters:
        certificateId:
          required: true
          displayName: certificateId
          description: certificate ID
      get:
        displayName: certificateRead
        description: Retrieve the certificate object specified by ID. If the ID specifies a chain, multiple certificate objects are retrieved.
      delete:
        displayName: certificateDelete
        description: Delete the specified certificate
  /csr/{scopeId}:
    displayName: csrCreate
    description: Create Certificate Signing Requests (CSRs)
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: Specified scope ID
    post:
      displayName: csrCreate
      description: Create a CSR
      body:
        application/xml:
          example: |
            <csr>
              <subject>
                <attribute>
                  <key></key>
                  <value></value>
                </attribute>
              </subject>
              <algorithm></algorithm>
              <keySize></keySize>
            </csr>
          schema: csrCreate
  /csr/{csrId}:
    displayName: csrSelfSigned
    description: Self signed certificate for CSR
    uriParameters:
      csrId:
        required: true
        displayName: csrId
        description: CSR ID
    put:
      displayName: csrSelfSignedUpdate
      description: Create a self signed certificate for CSR
      queryParameters:
        noOfDays:
          displayName: noOfDays
          required: true
    get:
      displayName: csrSelfSignedRead
      description: Retrieve specific CSR
  /csr/scope/{scopeId}:
    displayName: csrScope
    description: CSRs for specific scope
    uriParameters:
      scopeId:
        displayName: scopeId
        description: Specified scope
        required: true
    get:
      displayName: csrScopeRead
      description: Query CSRs for specific scope
  /crl/{scopeId}:
    displayName: crlScopeCreate
    description: Create Certificate Revocation Lists (CRLs) on a specified scope
    uriParameters:
      scopeId:
        required: true
        displayName: scopeId
        description: Specified scope
    post:
      displayName: crlScopeCreate
      description: Create CRL on the specified scope
      body:
        application/xml:
          example: |
            <trustObject>
              <pemEncoding></pemEncoding>
            </trustObject>
          schema: crlScopeCreate
  /crl/scope/{scopeId}:
    displayName: crlScopeRead
    description: Retrieve all certificates for the specified scope
    uriParameters:
      scopeId:
        displayName: scopeId
        description: Specified scope
        required: true
    get:
      displayName: crlScopeRead
      description: Retrieve all certificates for the specified scope
  /crl/{crlId}:
    displayName: crlID
    description: CRL certificates for specified certificate
    uriParameters:
      crlId:
        required: true
        displayName: crlId
        description: CRL ID
    get:
      displayName: crlIDRead
      description: Retrieve certificate object for specified crlID
    delete:
      displayName: crlIDDelete
      description: Delete the specified CRL
/2.0/services/policy:
  displayName: policy
  description: Operations on policy objects
  /securitypolicy:
    displayName: securityPolicy
    description: Working with security policies (Endpoint, firewall, network introspection services applied to security group)
    post:
      displayName: securityPolicyCreate
      description: Create a security policy
      body:
        application/xml:
          example: |
            <securityPolicy>
              <name></name>
              <description></description>
              <precedence></precedence>
              <parent>
                <objectId></objectId>
              </parent>
              <securityGroupBinding>
                <objectId></objectId>
              </securityGroupBinding>
              <actionsByCategory>
                <category></category>
                <action class="">
                  <name></name>
                  <description></description>
                  <category></category>
                  <actionType></actionType>
                  <isActionEnforced></isActionEnforced>
                  <isActive></isActive>
                  <isEnabled></isEnabled>
                  <secondarySecurityGroup>
                    <objectId></objectId>
                  </secondarySecurityGroup>
                  <applications>
                    <application>
                      <objectId></objectId>
                    </application>
                    <applicationGroup>
                      <objectId></objectId>
                    </applicationGroup>
                  </applications>
                  <logged></logged>
                  <scope>
                    <id></id>
                    <name></name>
                    <objectTypeName></objectTypeName>
                  </scope>
                </action>
                <direction></direction>
                <outsideSecondaryContainer></outsideSecondaryContainer>
                </actionsByCategory>
            </securityPolicy>
          schema: securityPolicyCreate
    /{ID}:
      displayName: securityPolicyID
      description: Specific security policy
      uriParameters:
        ID:
          required: true
          displayName: ID
          description: ID of desired security policy (or 'all' to include all security policies for the securityPolicyID read method)
      get:
        displayName: securityPolicyIDRead
        description: Retrieve security policy information
      put:
        displayName: securityPolicyIDUpdate
        description: Edit a security policy
        body:
          application/xml:
            example: |
              <securityPolicy>
                <securityPolicy>
                  <name></name>
                  <description></description>
                  <precedence></precedence>
                  <parent>
                    <objectId></objectId>
                  </parent>
                  <securityGroupBinding>
                    <objectId></objectId>
                  </securityGroupBinding>
                  <actionsByCategory>
                    <category></category>
                    <action class="">
                      <name></name>
                      <description></description>
                      <category></category>
                      <actionType></actionType>
                      <isActionEnforced></isActionEnforced>
                      <isActive></isActive>
                      <isEnabled></isEnabled>
                      <secondarySecurityGroup>
                        <objectId></objectId>
                      </secondarySecurityGroup>
                      <applications>
                        <application>
                          <objectId></objectId>
                        </application>
                        <applicationGroup>
                          <objectId></objectId>
                        </applicationGroup>
                      </applications>
                      <logged></logged>
                      <scope>
                        <id></id>
                        <name></name>
                        <objectTypeName></objectTypeName>
                      </scope>
                    </action>
                    <direction></direction>
                    <outsideSecondaryContainer></outsideSecondaryContainer>
                  </actionsByCategory>
                </securityPolicy>
              </securityPolicy>
            schema: securityPolicyIDUpdate
      delete:
        displayName: securityPolicyIDDelete
        description: Delete a security policy
        queryParameters:
          force:
            type: boolean
            displayName: force
            description: If set to true, security policy is deleted even if it is being used somewhere
      /securityactions:
        displayName: securityActions
        description: Security actions for a security policy
        get:
          displayName: securityActionsRead
          description: Retrieve security actions for a security policy
    /hierarchy:
      displayName: hierarchy
      description: Security policy configuration import/export
      post:
        displayName: hierarchyCreate
        description: Import a security policy configuration
        queryParameters:
          suffix:
            displayName: suffix
            description: (optional) Added after names
        body:
          application/xml:
            example: |
              <securityPolicyHierarchy>
                <name></name>
                <description></description>
                <securityPolicy></securityPolicy>
                <securityGroup></securityGroup>
              </securityPolicyHierarchy>
            schema: hierarchyCreate
      get:
        displayName: hierarchyRead
        description: Export a Service Composer configuration and save to your desktop for use as a backup
        queryParameters:
          policyIds:
            displayName: policyIds
            description: Comma separated security policy id's
          prefix:
            displayName: prefix
            description: (optional) Some prefix to add before the names of the objects in the exported XML
  /securityaction/category/virtualmachines:
    displayName: securityActionVM
    description: Virtual machines for a security action
    get:
      displayName: securityActionVMRead
      description: Fetch all vm objects on which security action of a given category and attribute has been applied
      queryParameters:
        attributeKey:
          displayName: attributeKey
          description: Attribute name
        attributeValue:
          displayName: attributeValue
          description: Attribute value
  /securitygroup/{ID}/securityactions:
    displayName: securityActionSecGroup
    description: Security actions on a security group
    uriParameters:
      ID:
        displayName: ID
        description: Specified security group
    get:
      displayName: securityActionRead
      description: Query all security actions applicable on a security group
  /virtualmachine/{ID}/securityactions:
    displayName: vmApplicableSecurityAction
    description: Fetch the security actions applicable on a virtual machine
    uriParameters:
      ID:
        displayName: ID
        description: VM ID
    get:
      displayName: vmApplicableSecurityAction
      description: Fetch the security actions applicable on a virtual machine
  /policy/serviceprovider/firewall:
    displayName: serviceComposerDFWSync
    description: Synchronizing Service Composer rules with distributed firewall
    get:
      displayName: serviceComposerDFWSyncRead
      description: Query the time since when Service Composer firewall is out of sync with dfw, or synchronize Service Composer firewall with dfw
  /policy/securitygroup/{ID}/securitypolicies:
    displayName: secGroupPolicies
    description: Retrieve security policies mapped to a security group
    uriParameters:
      ID:
        displayName: ID
        description: Specified security group ID
    get:
      displayName: secGroupPoliciesRead
      description: Retrieve security policies mapped to a security group